所以我知道标题有点令人困惑,但我不知道如何以更好的方式表达我的问题,而且我也是python的新手。
好的,这就是我的问题:我有这个程序,当你点击一个按钮然后显示那个数字时会生成一个随机数,但是每次你点击它时会显示前一个下面的新权利,所以我想要这个数字只是改变而不是出现在前一个下面,这是我的代码:
(截图:https://gyazo.com/2bc9ae7bbe32c2422c94891ca30b8512 Python 3.0)
from tkinter import *
import random
screen = Tk()
def generate():
random_number = random.randint(1, 1000)
result = Label(screen, text="Number: " + str(random_number))
result.pack(side=TOP)
text = Label(screen, text="Click to generate a random number:")
text.pack(side=TOP)
button = Button(screen, text="GENERATE!", command=generate, fg="yellow",
bg="purple")
button.pack(side=TOP)
screen.mainloop()
答案 0 :(得分:3)
变化:
def generate():
random_number = random.randint(1, 1000)
result = Label(screen, text="Number: " + str(random_number))
result.pack(side=TOP)
使用:
result = Label(screen)
result.pack(side=TOP)
def generate():
random_number = random.randint(1, 1000)
result['text'] = "Number: " + str(random_number)
每次调用Label
时,前代码都会创建一个 new generate
对象,这会占用内存;而后者仅创建Label
个对象一次,并且每次调用text
时只修改其generate
选项。
修改:与Farhan K.的评论同时添加了更多解释。
答案 1 :(得分:0)
使用place
代替pack
使用包告诉标签小部件显示前一个结果,但place
将通过重叠前一个显示在确切位置。
from tkinter import *
import random
screen = Tk()
def generate():
random_number = random.randint(1, 1000)
result = Label(screen, text="Number: " + str(random_number))
result.place(x=650, y=100)
text = Label(screen, text="Click to generate a random number:")
text.pack(side=TOP)
button = Button(screen, text="GENERATE!", command=generate, fg="yellow",
bg="purple")
button.pack(side=TOP)
screen.mainloop()