Python Gui中的绑定返回键

2024-06-11 18:54:32 发布

您现在位置:Python中文网/ 问答频道 /正文

正在为信息学课程做一个数字猜测作业,并且在我的一生中无法绑定这个密钥。使用以前的程序和类示例,我能够绑定此键以执行某些功能,但在这个特定的函数中没有。因此,我假设有一些非常小的错误,我只是忽略了它。感谢您的帮助

from tkinter import *
import random

class Application(Frame):


    def __init__(self, master): #sets up gui elements
        Frame.__init__(self, master)  
        self.grid()
        self.create_widgets()
        self.number = random.randint(0, 9)

    def create_widgets(self):
        # creates instructions
        Label(self, text = "I'm thinking of a number between 0 and 9.").grid(row = 0, column = 0, sticky = W)
        Label(self, text = "Try and guess it!").grid(row = 1, column = 0, sticky = W)

        # create guess label and entry
        Label(self, text = "Your guess:").grid(row = 2, column = 0, sticky = W)
        self.guess_ent = Entry(self)
        self.guess_ent.grid(row = 2, column = 1, sticky = W)

        # creates button to initiate run function
        self.bttn=Button(self, text = "Submit", command = self.run)
        self.bttn.grid(row = 3, column = 1, sticky = W)
        #binds return key
        self.bttn.bind('<KeyPress>', self.enter)
        self.bttn.focus_set()
        # creates feedback text box for run function
        self.text = Text(self, width = 75, height = 10, wrap = WORD)
        self.text.grid(row = 4, column = 0, columnspan = 4)



    def run(self):
        #gets random number
        guess = int(self.guess_ent.get())
    #if to test guesses and give appropriate feedback
        if guess != self.number:
            print_text = "You guessed {0}.".format(guess)

            if guess > self.number:
                print_text += " That's too high. Guess lower..."
            elif guess < self.number:
                print_text += " That's too low. Guess higher..."

            self.text.delete(0.0, END)
            self.text.insert(0.0, print_text)

            self.guess_ent.delete(0, END)
        else:
            print_text = "That's the right number! You did it!!"
            self.text.delete(0.0, END)
            self.text.insert(0.0, print_text)

    def enter(self, event):
        if event.keysym == "Return":
            self.run()
# main
root = Tk()
root.title("Number Guesser")
app = Application(root)
root.mainloop()

Tags: andruntextselfnumberifdefcolumn
1条回答
网友
1楼 · 发布于 2024-06-11 18:54:32

tkinter中的返回键也是Return,因此您的代码应该是:

self.bttn.bind('<Return>', self.enter)

您正在将键绑定到一个按钮,该按钮在按下或按Tab键之前不会获得焦点,因此几乎不可能注意到绑定的触发器,因为您的按钮和绑定调用相同的方法

绑定到Entry小部件,以便您可以在小部件中触发绑定:

self.guess_ent.bind('<Return>', self.enter)

相关问题 更多 >