1
最近、私はPython 3のtkinterモジュールを使ってGUIを作成する方法を学びました。残念ながら私のEntryウィジェットは更新されないという問題に悩まされてきました。この問題を理解するために、Entryウィジェットに文字列 'hello'を入力する短いテストケースを書きました。私は方法の面で私の仕事を整理しようとするとtkinterは機能付き入力ボックスを更新しません
class SettingsWindow():
def __init__(self):
self.root = tk.Tk()
main_frame = ttk.Frame(self.root, padding=(15, 15, 15, 15))
main_frame.grid()
start_time = tk.StringVar()
start_time_ent = ttk.Entry(main_frame, textvariable=start_time, width=5)
start_time.set('hello')
start_time_ent.grid()
main_frame.mainloop()
if __name__ == '__main__':
app = SettingsWindow()
問題が発生する:
class SettingsWindow():
def __init__(self):
self.root = tk.Tk()
main_frame = ttk.Frame(self.root, padding=(15, 15, 15, 15))
main_frame.grid()
self.general_settings(main_frame, parent_column=1, parent_row=2)
main_frame.mainloop()
def general_settings(self, parent_frame, parent_column=0, parent_row=0):
start_time = tk.StringVar()
start_time_ent = ttk.Entry(parent_frame, textvariable=start_time, width=5)
start_time.set('hello')
start_time_ent.grid()
if __name__ == '__main__':
app = SettingsWindow()
私はコードの2番目のバージョン、空のエントリウィジェットとウィンドウのロードを実行すると。私の唯一の推測はなぜ起こるのですか?start_time.set('hello')
がいくつかのキューに詰まっていて、ウィンドウをコンパイルするときにコマンドが欠落しています。助言がありますか?
ありがとうございました。あなたはなぜtskウィジェットがとても敏感であるのか知っていますか? – user144153
@ user144153:わかりません。多分それを実装した人は怠惰であるか、それを適切に実装する方法を知らなかったでしょう。あるいは、実際の質問は、通常のtkinterウィジェットがガベージコレクタに対して敏感でない理由です。 –