【问题标题】:My Variable will not change out side the definition我的变量不会改变定义
【发布时间】:2013-11-19 11:33:21
【问题描述】:

我写了我的第一个 py 代码。此代码用于创建乐透号码生成器。问题是我的变量nums 不会改变。请帮我。 我知道这不是最好的,所以请告诉我如何改进,任何 cmets 将不胜感激。我希望随机数出现在钢包中,所以我可以按下提交按钮和 5 个新数字出现.问题是我名副其实的“nums”不会改变。谢谢你的帮助。

import random
from tkinter import *

#TK()

window = Tk()
window.title("Lottery Nummber Generator")

#Def Click

def click():
        global nums
        global numsgen
        numsgen = random.sample(range(1, 49), 5)
        nums = " ".join(str(x) for x in  numsgen)
        print(nums)

numsgen = random.sample(range(1, 49), 5)
nums = " ".join(str(x) for x in  numsgen)

#Fake just to make it look nice 

Label(window,text="").grid(row=1, column=0,sticky=W)
Label(window,text="").grid(row=2, column=1,sticky=W)
Label(window,text="").grid(row=2, column=3,sticky=W)


#Submit button

Button(window, text="Submit", width=5,command=click).grid(row=3, column=1, sticky=W)

#Label

group = LabelFrame(window, text="Lottery Numbers:", padx=5, pady=5,fg="dark orange")
group.pack(padx=10, pady=10,)
group.grid(row=2, column=1,sticky=W)
w = Label(group, text=nums)
w.pack()
mainloop()

【问题讨论】:

  • 即使您使用较小的字体,问题也会同样可见。
  • 真的很好用。你为什么断定它不起作用?
  • 我希望随机数出现在钢包中,这样我就可以按下提交按钮并出现 5 个新数字。问题是我名副其实的“nums”不会改变。谢谢你的帮助。

标签: python tkinter output


【解决方案1】:

要更新标签,您必须执行以下两项操作之一:

  1. StringVar 与标签相关联。当您更新变量时(通过其set 方法),与之关联的任何标签都会自动更改。如果多个小部件需要显示相同的值,这是一个很好的解决方案。
  2. 直接配置标签。这要求您保存对小部件的引用,以便您以后可以重新配置它们。例如,您可以将 w.configure(text=nums) 放入您的 click 函数中。这个解决方案比使用StringVar 简单一点,只是因为它需要的对象更少。

【讨论】:

  • 非常感谢,但我仍然不确定如何使用您的方法。我了解使用 StringVar,但我不确定如何实现它,我正在使用您使用 w.configure(text=nums) 的示例你介意告诉我你将如何在这段代码中实现它吗。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 2017-04-10
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多