python - 如何在弹出窗口中刷新答案
问题描述
所以我只是想用gui做一个掷骰子。我创建了一个弹出窗口,显示从 1 到 6 的随机数random.randint(1,6)
。我将它分配给一个名为 number 的变量,number = random.randint(1,6)
但它总是给出相同的数字。当我点击按钮时,我只需要它不要总是吐出相同的数字
def popup_showinfo():
showinfo("You rolled", number)
number = random.randint(1,6)
class Application(ttk.Frame):`
def __init__(self, master):
tk.Frame.__init__(self, master)
self.pack()
self.button_showinfo = ttk.Button(self, text="Roll", command=popup_showinfo)
self.button_showinfo.pack()
root = tk.Tk()
app = Application(root)
root.mainloop()
解决方案
好的,所以你的问题并不完整,但我想我明白了你需要什么。
我的以下答案将在这里达到 2 个目的。一个是向您展示一个Minimal、Complete 和 Verifiable 示例代码的样子。第二是产生你正在寻找的影响。
您可以使用类内部的方法(类函数)更好地管理事物,而不是在类之外使用函数。因此,让我们将该弹出功能移动到类中。接下来,我们可以使用您的随机整数更新标签。请记住您现在设置代码的方式,随机数只会在程序启动时产生一次。相反,您希望在方法中包含随机 int 代码,以便每次运行该方法时都会创建一个新数字。
通过直接向类添加标签并从新方法调用标签更新,我们可以滚动 1 到 6 之间的数字。
import tkinter as tk
import tkinter.ttk as ttk
import random
class Application(ttk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.showinfo_label = ttk.Label(self)
self.showinfo_label.pack()
self.button_showinfo = ttk.Button(self, text="Roll", command=self.showinfo).pack()
def showinfo(self):
number = random.randint(1,6)
self.showinfo_label.config(text="You rolled {}".format(number))
root = tk.Tk()
app = Application(root).pack()
root.mainloop()
请记住,当我们谈论 MCVE 时,我上面的代码就是我们正在寻找的。产生影响或至少重现错误所需的最低限度。
这包括所有必需的导入、根和 mainloop() 代码以及执行特定操作所需的少量代码。
更新:
看来您确实在尝试使用showinfo
Tkinter 消息框方法中的方法,所以这里也是一个使用该方法的示例。
import random
import tkinter as tk
import tkinter.ttk as ttk
from tkinter.messagebox import showinfo
class Application(ttk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.button_showinfo = ttk.Button(self, text="Roll", command=self.showinfo).pack()
def showinfo(self):
number = random.randint(1,6)
showinfo("You rolled ", "{}".format(number))
root = tk.Tk()
app = Application(root).pack()
root.mainloop()
推荐阅读
- python - 将列表中的项目分配到python中固定数量的垃圾箱的所有组合?
- azure - Azure - 使用二头肌设置存储容器访问策略
- cassandra - Apache 使用异步 IO 链接到 Cassandra
- c++ - cmake 将外部库与 IMPORT_SONAME ro IMPORT_LOCATION 链接
- sql-server - 将级别列转换为父 ID
- gremlin - Gremlin Python:查询的响应不同
- node.js - 截至 2021 年 6 月 17 日,Google Analytics(分析)UA Measurement Protocol 事件无法在多个媒体资源中运行
- c# - XML 反序列化因嵌套类(内部类)而失败
- node.js - 如何获取对特定消息做出反应的用户的不和谐 ID discord.js
- javascript - 在 AR 快速查看中禁用即时 AR 放置