尝试将列表项添加到 tkinter 中的文本框

Trying to add list item to textbox in tkinter

这是我的代码:

from tkinter import *
import random

root = Tk()

numbers = [0,1,2,3,4,5]

global AdviseBox
AdviseBox = Text(root, width=110, height=10)
AdviseBox.pack(side=RIGHT, expand=YES, padx=5, pady=5)

AdviseBox.insert(INSERT, "Your random number is:",(numbers[random.randint(0, len(numbers) - 1)]), "\n\nHappy?")

root.mainloop()

但我希望它在文本框中产生这个:

Your random number is: [RANDOM NUMBER HERE]

Happy?

我已经测试过打印语句是否可以代替将文本插入文本框来工作,并且打印语句能够产生所需的输出。但是,问题似乎是文本框无法理解我从列表中选择数字的部分。我尝试了其他变量,这是同样的问题。我不知道该怎么办,我想我已经尝试了一切! :(

insert 方法采用可变数量的参数。第一个参数是索引,第二个是字符串。第三个,如果有的话,是一个 tag。第四个是字符串,第五个是标签,第六个是字符串,第七个是标签,依此类推(index, string, tag, string, tag, string, ...)

查看这行代码:

AdviseBox.insert(INSERT, "Your random number is:",(numbers[random.randint(0, len(numbers) - 1)]), "\n\nHappy?")

...使用多行与此相同:

AdviseBox.insert(
    INSERT,                                           # index
    "Your random number is:",                         # string
    (numbers[random.randint(0, len(numbers) - 1)]),   # tag
    "\n\nHappy?"                                      # string
)

您需要做的是将最后三个字符串连接成一个字符串。使用临时变量最容易做到。试图将所有这些代码塞进一个语句中没有任何价值。另外,当您使用多行时,调试变得更容易,因为您可以检查所有中间值。

例如:

number = random.randint(0, len(numbers)-1)
s = "Your random number is: {}\n\nHappy?".format(number)
AdviseBox.insert(INSERT, s)

注意:由于您想从现有的数字列表中选择,您可以使用 random.choice 而不是 random.randint,这更能反映您的意图:

number = random.choice(numbers)