这是我的代码:
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?
我已经测试过查看print语句是否有效,而不是将文本插入到文本框中,print语句能够生成所需的输出。但是,似乎问题是文本框无法理解从列表中选择数字的部分。我尝试了其他变量,这是同样的问题。我不知道该怎么办,我想我已经尝试了一切! :(
答案 0 :(得分:1)
insert
方法采用可变数量的参数。第一个参数是索引,第二个参数是字符串。第三个(如果有的话)是 标记 。第四个是字符串,第五个是标签,第六个是字符串,第七个是标签,依此类推(索引,字符串,标签,字符串,标签,字符串......)
看看这行代码:
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.randint
,您可以使用random.choice来更准确地反映您的意图:
number = random.choice(numbers)