-1

プログラムの一環として、ユーザーに名前とクラス (高校のクラス) を尋ねます。ユーザーが名前を入力した後に「Enter」を押すと、ボタンが無効になり、「チューター」フィールドが表示されます。ただし、ユーザーは、何も入力していなくても、基本的に自分の名前を送信できます。ユーザーが入力を開始したら、「Enter」ボタンをアクティブにするだけです。

以下で行ったことはうまくいかないようです:(

また、入力の検証が機能しません - 理由はわかりますか?

class Enter_Name_Window(tk.Toplevel):
    '''A simple instruction window'''
    def __init__(self, parent):
        tk.Toplevel.__init__(self, parent)
        self.text = tk.Label(self, width=40, height=2, text= "Please enter your name and class." )
        self.text.pack(side="top", fill="both", expand=True)

        name_var = StringVar()
        def validate_enter_0():
            self.Enter_0.config(state=(NORMAL if name_var.get() else DISABLED))
            print("validate enter worked")

        name_var.trace('w', lambda name, index, mode: validate_enter_0)
        enter_name = Entry(self, textvariable=name_var)
        enter_name.pack()
        enter_name.focus_set()


        def callback():
            if len(name_var) > 10 or any(l not in string.ascii_letters for l in name_var):
                print("Input validation worked")

            self.display_name = tk.Label(self, width=40, height=2, text = "Now please enter your tutor group.")
            self.display_name.pack(side="top", fill="both", expand=True)


            tutor_var = StringVar()
            def validate_enter_2():
                self.Enter_0_2.config(state=(NORMAL if tutor_var.get() else DISABLED))
                print("validate enter worked")
            tutor_var.trace('w', lambda name, index, mode: validate_enter_0_2)
            tutor = Entry(self, textvariable=tutor_var)
            tutor.pack()
            tutor.focus_set()

            self.Enter_0.config(state="disabled")

            self.Enter_0_2 = Button(self, text="Enter", width=10, command=self.destroy)
            self.Enter_0_2.pack()


        self.Enter_0 = Button(self, text="Enter", width=10, command=callback)
        self.Enter_0.pack()
4

1 に答える 1