私は次のようなプログラムを書いています:複数のウィンドウのTkinterサンプルコードですが、ボタンが正しく読み込まれないのはなぜですか?
- ボタンを押してウィンドウを開きます。
- 別のボタンを押して、新しく開いたウィンドウを閉じます。
クラスを使用しているので、コードを後で大きなプログラムに挿入できます。しかし、ボタンを正しく読み込むことができません。
import tkinter as tk
class Demo1(tk.Frame):
def __init__(self):
tk.Frame.__init__(self)
self.pack()
self.master.title("Demo 1")
self.button1 = tk.Button(self, text = "Button 1", width = 25,
command = self.new_window)
self.button1.grid(row = 0, column = 1, columnspan = 2, sticky = tk.W+tk.E+tk.N+tk.S)
def new_window(self):
self.newWindow = Demo2()
class Demo2(tk.Frame):
def __init__(self):
new = tk.Frame.__init__(self)
new = tk.Toplevel(self)
new.title("Demo 2")
new.button = tk.Button(text = "Button 2", width = 25,
command = self.close_window)
new.button.pack()
def close_window(self):
self.destroy()
def main():
Demo1().mainloop()
if __name__ == '__main__':
main()
@ADBを。一般に、2つの 'Tk()'ウィンドウ上で2つの 'mainloop()'を実行すると、下が見えます。しかし、複数のウィンドウが必要な場合は、2つの 'mainloop()'を避けることができます。したがって、 'Tople()'ウィジェットは 'Tk()'と似ています。 –
2つのメインループは何にも「依存」せず、単に「見下された」だけではなく、間違っています。あなたは1つだけ必要です。 mainloopへの呼び出しは無限ループです。無限ループ内で無限ループを複数回実行すると、無限ループになります。あなたのコード(Demo1.new_window内)で 'mainloop'への2回目の呼び出しを削除する必要があります。そうしないと、Tkinterの使い方を習得しようとしている人が混乱します。 –
'close_windows()'について説明できますか?いつ呼び出さなければならないのですか? – sbhatla