尝试将列表项添加到 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)
这是我的代码:
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)