You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将random.sample结果输出到Tkinter的Text组件而非终端?

解决Tkinter GUI中把随机号码显示到文本框的问题

嘿,我来帮你搞定这个问题!你现在遇到的情况是生成的彩票号码只会输出到终端,没法显示在界面的output文本框里对吧?咱们直接修改代码里的关键部分就能解决:

问题根源

原来的x()函数用print()把结果输出到了终端,而要把内容放到Tkinter的Text组件中,得用Text组件的insert()方法;另外每次生成新号码前最好清空旧内容,避免内容叠加。还要注意:Text组件没有command属性,你之前调整它的command是没用的,按钮绑定x()的逻辑是对的,只需要修改x()函数内部即可。

修改后的完整代码

我把关键修改部分标出来了,你可以直接替换原来的代码:

from Tkinter import *
import random
import webbrowser

url = 'http://www.google.co.uk'

def OpenUrl():
    webbrowser.open(url)

# 重点修改的x()函数
def x():
    # 清空文本框旧内容:1.0代表第一行第一列,END代表文本末尾
    output.delete(1.0, END)
    # 生成6个1-59之间的随机不重复号码
    numbers = random.sample(range(1, 60), 6)
    # 把列表转成友好的字符串格式,还加了排序让号码按从小到大排列
    num_str = ' '.join(map(str, sorted(numbers)))
    # 把号码插入到文本框中
    output.insert(END, num_str)

window = Tk()
window.title("UK Lotto Killa")
window.geometry("275x275")

l1 = Label(window, text=" UK Lotto Number Generator", font="bold")
l1.grid(row=1, column=1, sticky=W)
l2 = Label(window, text=" bitsnpcs (2018)", fg="grey", font="none 8")
l2.grid(row=13, column=1, sticky=W)

output = Text(window, width=23, height=2)
output.grid(row=3, column=1, sticky=W)

# 以下间距标签和按钮部分保持不变
l3 = Label(window, text=" ")
l3.grid(row=2, column=1, sticky=W)
l3 = Label(window, text=" ")
l3.grid(row=4, column=1, sticky=W)
l3 = Label(window, text=" ")
l3.grid(row=0, column=1, sticky=W)
l3 = Label(window, text=" ")
l3.grid(row=10, column=1, sticky=W)
l3 = Label(window, text=" ")
l3.grid(row=6, column=1, sticky=W)
l3 = Label(window, text=" ")
l3.grid(row=12, column=1, sticky=W)

l3 = Label(window, text=" You have Options - ")
l3.grid(row=7, column=1, sticky=W)
l3 = Label(window, text=" Donate % of winnings to favorite project.")
l3.grid(row=8, column=1, sticky=W)
l3 = Label(window, text=" Donate stake to favorite project.")
l3.grid(row=9, column=1, sticky=W)

Button(window, text="Generate Numbers", width=16, command = x).grid(row=4, column=1, sticky=W)
Button(window, text="Donate", width=6, command=OpenUrl).grid(row=11, column=1, sticky=W)

window.mainloop()

关键修改点说明

  1. 清空文本框:每次生成新号码前用output.delete(1.0, END)清除旧内容,避免多次点击后内容堆积。
  2. 格式化号码:把random.sample返回的列表转成字符串,还加了sorted()让号码按从小到大排列,更符合彩票的展示逻辑。
  3. 插入到文本框:用output.insert(END, num_str)把格式化后的号码插入到文本框的末尾。

这样点击"Generate Numbers"按钮时,号码就会显示在按钮上方的文本框里啦!

内容的提问来源于stack exchange,提问作者Jade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:38:34