为了账号安全,请及时绑定邮箱和手机立即绑定

使用 tkinter 按钮更新变量

使用 tkinter 按钮更新变量

Qyouu 2022-06-22 17:00:35
我尝试编写一个测试写作技巧的程序。(使用 tkinter)对于使用输入 y,按回车,写下给你的句子再次按回车,它会输出你花费的时间。这是有效的部分。为了增加更多的灵活性,我想添加一个按钮来打乱句子并给你一个新的。我已经random.choice从列表中尝试过,将变量定义为参数,目前卡在random.randint. 到目前为止,他们都没有工作过。他们在启动代码后输出一个随机句子,但按钮根本什么都不做。这是函数的代码,以及它使用的按钮的更下方。如果您需要完整的代码,请询问:Ddef 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)最后,我只是在寻找一种让我的按钮工作的方法。
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

让你的回调函数返回一个变量并没有真正做任何事情。具体来说,它不会更新 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()


查看完整回答
反对 回复 2022-06-22
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信