我的变量不会改变定义

时间:2013-11-19 11:33:21

标签: python tkinter output

我写了我的第一个py代码。这段代码创建了一个乐透号码生成器。问题是我的变量nums不会改变。请帮我。 我明白这不是很好,所以请告诉我如何改进,任何评论都会受到赞赏。我希望随机数字出现在钢包里,这样我就可以按下提交按钮和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()

1 个答案:

答案 0 :(得分:0)

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

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