python - 为什么这个随机选择器总是选择相同的选择

标签 python random tkinter

我正在学习 python,只是在摆弄我能做的事情。作为一个更大项目的概念证明,我制作了一个非常非常简单的 python 脚本,它将在 GUI 上显示“一”或“二”,但这不起作用。随机选择者总是选择“二”而不是“一”。这是代码:

from tkinter import*
import random

root = Tk()
root.geometry("800x500")
root.title("amazing")

def one():
     label1 = Label(root, text="one", font=("Comic Sans MS", 30),  fg="purple").place(x=100, y=300)


def two():
    label2 = Label(root, text="two", font=("Comic Sans MS", 30),  fg="purple").place(x=100, y=300)


rchoice = [two, one]
doit = random.choice(rchoice)

Button = Button(root, text="Button", width=15, height=3, font=("Comic Sans MS", 20), fg="blue", bg="lightgreen", command=doit).pack(pady=50)

root.mainloop()

最佳答案

单击按钮时程序始终运行相同选项的原因是,标签(onetwo)是在程序启动时选择的,而不是每次都选择单击该按钮。因此,当您的程序启动时,它将选择 onetwo,然后该按钮将始终运行所选标签(直到重新启动)。基本上,random.choice 在开始时仅执行一次,然后在程序运行期间设置 doit

要解决此问题,您需要在单击按钮时选择标签。您可以通过重新定义 doit 来做到这一点,如下所示:

def doit():
    rchoice = [one, two]
    selected = random.choice(rchoice)
    return selected()

关于python - 为什么这个随机选择器总是选择相同的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53598858/

相关文章:

python - 在 PyTorch 和 Numpy 中快速生成形状为 (1, 1, 256) 和 (10, 1, 256) 的多个 3D 张量

python - 在 python 中,如何从 Gtk.entry 输入框中获取值并将其传递给变量?

构造函数中的Java随机方法不起作用

python - Sympy 重新配置随机种子

python - 使用 Tkinter 控制回调顺序

python - 在 pyd 中实现迭代器

python - 从基于 Django 类的 View 的 form_valid 方法调用特殊(非 HTTP)URL

python - 在 Tkinter 中将方程式表示为 Canvas 对象

r - 在 R 和 Julia 中生成相同的随机数

python-3.x - 平铺窗口大小调整问题