使用 tkinter 按钮更新变量

我尝试编写一个测试写作技巧的程序。(使用 tkinter)


对于使用输入 y,按回车,写下给你的句子再次按回车,它会输出你花费的时间。这是有效的部分。


为了增加更多的灵活性,我想添加一个按钮来打乱句子并给你一个新的。我已经random.choice从列表中尝试过,将变量定义为参数,目前卡在random.randint. 到目前为止,他们都没有工作过。他们在启动代码后输出一个随机句子,但按钮根本什么都不做。


这是函数的代码,以及它使用的按钮的更下方。如果您需要完整的代码,请询问:D


def change_sentence():

    var = random.randint(0,5)

    if var == 1:

        sentence_var = "thats gonna work"

        return sentence_var


    if var == 2:

        sentence_var = "probably"

        return sentence_var


    if var == 3:

        sentence_var = "i guess"

        return sentence_var


    if var == 4:

        sentence_var = "maybe?"

        return sentence_var


    if var == 5:

        sentence_var = "please??"

        return sentence_var 


sentence_var = change_sentence()




shuffle_button = Button(root, text="Shuffle", command=change_sentence)

最后,我只是在寻找一种让我的按钮工作的方法。


Qyouu
浏览 165回答 1
1回答

繁华开满天机

让你的回调函数返回一个变量并没有真正做任何事情。具体来说,它不会更新 GUI 中的文本。您应该查看StringVar并使用textvariable文本对象的参数。这是一个小例子。我还清理了您的 if 语句:root = tk.Tk()class tkApp:    def __init__(self, master):        self.sentence_var = tk.StringVar()        self.change_sentence()        sentence_text = tk.Label(master, textvariable=self.sentence_var)        shuffle_button = tk.Button(master, text="Shuffle", command=self.change_sentence)        sentence_text.pack()        shuffle_button.pack()    def change_sentence(self):        var = np.random.randint(1, 6)        if var == 1:            self.sentence_var.set("thats gonna work")        elif var == 2:            self.sentence_var.set("probably")        elif var == 3:            self.sentence_var.set("i guess")        elif var == 4:            self.sentence_var.set("maybe?")        elif var == 5:            self.sentence_var.set("please??")myApp = tkApp(root)root.mainloop()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python