Ich habe vor einigen Tagen begonnen, mich intensiver mit Python auseinander zu setzen, da ich mein plattformübergreifenden Skripte/Tools/Apps (nennt es, wie ihr wollt) eben damit umsetzen wollte. Windows-spezifische Dinge setze ich hauptsächlich mit AutoIt um und ich verfüge über einige Jahre Erfahrung mit C++ in Verbindung mit Qt. An generellen Programmier-Fähigkeiten, sollte es also nicht scheitern.
Allerdings habe ich vielleicht für den Anfang etwas hoch gegriffen, denn ich möchte direkt ein Tool mit grafischem Interface umsetzen. Und vermutlich fehlt auch noch das eine oder andere Häppchen Verständis in Python.
Zum Problem:
Die Datei main.py erzeugt ein Fenster mit einem Button. Dieser Button löst eine Funktion aus dia_compose_message.py aus, welche ein weiteres Fenster erzeugen soll. In diesem weiteren Fenster soll ein Checkbutton ausgewertet werden.
Das Problem:
- Führe ich dia_compose_message.py direkt aus, funktioniert alles wie es soll, der Status wird korrekt erkannt.
- Führe ich main.py aus, erscheint das zweite Fenster ohne dass ich vorher den Button drücken müssen. In diesem Zustand funktioniert die Auswertung des Checkbutton allerdings auch. Ich nehme an, dass das Erscheinen des Fensters durch den import in main.py und die letzte Zeile in dia_compose_message.py (Klasse wird aufgerufen) ausgelöst wird.
- Kommentiere ich besagte letzte Zeile aus, erscheint das Fenster tatsächlich erst, wenn ich in main.py den Button gedrückt habe. Allerdings funktioniert dann die Auswertung des Status des Checkbutton nicht. Hier wird dann immer 0 (Null) zurückgegeben.
Wenn mir dann noch jemand erklären könnte, woran es liegt, dass Punkt 3 nicht richtig funktioniert, wäre ich extrem dankbar.
dia_compose_message.py:
Code: Alles auswählen
from tkinter import *
class ComposeMessage:
def __init__(self):
gui = Tk()
gui.title('Another title')
var1 = IntVar()
def cb_state():
print('variable is: ' + str(var1.get()))
che_administrative_message = Checkbutton(gui, text='Test',
variable=var1, command=cb_state)
che_administrative_message.place(x=5, y=55)
mainloop()
ComposeMessage()
Code: Alles auswählen
from tkinter import *
from tkinter import ttk
from dialogs import dia_compose_message
def compose_message():
dia_compose_message.ComposeMessage()
gui = Tk()
gui.minsize(width=800, height=600)
gui.maxsize(width=800, height=600)
gui.title('TITLE')
but_compose_message = Button(gui, text='Compose', command=compose_message)
but_compose_message.configure(width=110)
but_compose_message.place(x=5, y=35)
gui.mainloop()