-1

なぜこのコードがウィンドウに何も生成しないのか、私はかなり混乱しています。ラベル、テキスト エントリ、およびボタンはすべてクラス内に作成されています。それらのマスター フレームは、 initを通過するルートです。これは非常に些細な質問ですが、私が読んでいる本の内容と非常に似ていますが、その本は 14 年前のものです。私が見落としていたことを誰か説明してもらえますか?

from tkinter import *
import hashlib

class Login:

    def __init__(self, master):

        ##Set frame as root window
        frame = Frame(master)
        frame.pack()

        Label(top, text="Username").pack()

        ##Enter Username
        self.username = Entry(frame)
        self.username.pack()
        self.username.set_focus() #keyboard entry starts here

        Label(top, text="Password").pack()

        ##Enter Password
        self.password = Entry(frame)
        self.password.pack()

        ##Login
        self.login = Button(frame, text="Login", width=10)
        self.login.pack()

def main():
    root = Tk()
    root.geometry("400X400+300+300")
    app = Login(root)
    root.mainloop()

main()
4

2 に答える 2

1

そのため、これを Python 2 でテストしたところ、次の 4 つの点を修正する必要がありました。

  1. に変更tkinterTkinterます (ただし、Python 3 は を使用するtkinterため、それを使用していると思います)
  2. を回避するためにジオメトリ文字列を修正します (小文字の x を使用) TclError: bad geometry specifier
  3. を回避するには、に変更topします。frameNameError
  4. を避けるために、に変更set_focusします。focus_setAttributeError

これらの変更により、スクリプトは期待どおりに機能します。

(そして、最初の変更をスキップすると、Python 3 でも動作することを確認しました)

例外が表示されない IDE でこれを実行していますか?

于 2013-07-24T19:51:48.260 に答える