so..
jetzt hab ich ein etwas größeres Problemchen..
Und zwar
:
Ich bin ja noch ein Anfänger mit Python. Und ich hab jetzt einfach mal für mein "Projekt" drauflosgeschrieben, ohne dass ich das geändert habe was mir Xynon1 geraten hat:
Xynon1 hat geschrieben:Ich werde mal mein Programm dokumentieren und dann nochmal hochladen.
Zu deinem Problem:
- Arbeite nicht mit "place"-Methoden das ist sowas von altmodisch und ohne Designer reine Folter. Nimm am besten nur "pack"-Methoden und sie mal wie weit du kommst.
- Lass niemals das Widget sich selbst auf sein Eltern-Widget packen. So kann man als Nutzer von diesem Widget nicht mehr den Geometry-Manager bestimmen.
- Man kann es nicht oft genug sagen: Halte dich an PEP8.
So könnte man es z.B. machen:
Code: Alles auswählen
#!/usr/bin/env python
import Tkinter as tk
class DarstellungsFenster(tk.Canvas):
def __init__(self, master, cnf={}):
# bedenke das border, relief und background so Standard sind
# und deine Werte die du in 'cnf' übergibst eventuell überschreibst
tk.Canvas.__init__(self, master, cnf, border=4, relief='ridge',
background='white')
def hauptprogramm():
wurzel = tk.Tk()
breite, hoehe = 800, 600
x, y = 0, 0
wurzel.geometry('%dx%d+%d+%d' % (breite, hoehe, x, y))
wurzel.title('Notationsprogramm')
darstellungsfenster = DarstellungsFenster(wurzel, dict(width=715, height=515))
# expand sorgt dafuer das dein Widget immer genauso gross ist wie dein
# wurzel-Fenster
darstellungsfenster.pack(expand=True, fill="both")
# Sonst wird der Code auch bei einem Import aufgerufen
if __name__ == "__main__":
hauptprogramm()
jetzt will ich statt mit Linien und Kreise in Canvas, den Notenschlüssel und die Noten durch ein gif einfach einzufügen, was wesentlich einfacher und schöner funtioniert.
Aber das eingefügte Bild per
Code: Alles auswählen
Violinkey = tk.PhotoImage(file='vns_50.gif')
self.create_image(130,130,image=Violinkey)
sieht man nur nur wenn ich dann noch
self.pack(dict(width=400,hight=400))
wobei self.pack() nicht ausreicht, was ich nicht verstehe.
Ich dachte es liegt nur an dem pack.
Meine Frage: Ich hab nirgens gefunden wie ich das anders einfügen kann. Was muss ich jetzt umschreiben, bzw wie? Oder gibt es eine Lösung um dem umschreiben auf die pack-Funktionen zu entkommen?
(Ausschnitt aus GUI, class Darstellungsfenster,def__init__)
ich habs nur mal ins __init__ getan um zu sehen obs überhaupt geht
mein code besteht aus 2 modulen:
1.
Logik
2.
GUI
LG
questlove