11

私はPythonを学び、PythonでGUIを試してみて、このTkinterモジュールに出会いました。コードは実行されますが、実行時にウィンドウが表示されません。私のコードは次のとおりです。

from Tkinter import *
#to create a root window 
root = Tk()

プログラムは実行され、エラーは発生しませんが、ウィンドウは表示されません。

4

3 に答える 3

18

これをコードroot.mainloop()に追加してください。ここにチュートリアルがあります。

あなたのコメントに応えて

#Also note that `from <module> import *` is generally frowned upon
#since it can lead to namespace collisions. It's much better to only
#explicitly import the things you need.
from Tkinter import Tk, Label
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
于 2012-10-25T01:19:45.257 に答える
5

他の回答が指摘しているようmainloopに、ルート オブジェクトを呼び出す必要があります。

オブジェクト指向スタイルのプログラミングをお勧めします。また、グローバル インポートを行わないこともお勧めします (つまり、 'from Tkinter import *' ではありません)

以下は、私が通常最初に使用するテンプレートです。

import Tkinter as tk

class ExampleView(tk.Frame):
    def __init__(self, root):
        tk.Frame.__init__(self, root)
        l = tk.Label(self, text="your widgets go here...", anchor="c")
        l.pack(side="top", fill="both", expand=True)

if __name__=='__main__':
    root = tk.Tk()
    view = ExampleView(root)
    view.pack(side="top", fill="both", expand=True)
    root.mainloop()

これにより、メインロジックをファイルの先頭に保持し、ルートの作成と呼び出しをmainloop一緒に保持することが容易になります。これにより、コードが少し理解しやすくなると思います。また、このコードの再利用が少し簡単になります (つまり、これが作成可能ないくつかのウィンドウの 1 つである、より大きなプログラムを作成できます)。

于 2012-11-07T16:50:50.683 に答える
2

最後に追加root.mainloop()します。

于 2012-11-07T12:53:51.390 に答える