Python:如何接收随机字符串并将其显示到标签(tkinter)中?
目标:从字符串列表(设置为变量)中,随机选取一个字符串,并将其显示在新的Tkinter窗口中(假设程序中已有一个)。另外,如何实现要在程序中运行的类?(这与我假设的目标不同。) 技术信息: 使用Python 2.6.8版(出于技术原因)和Pycharm IDE(社区版) 可能的解决方案:使用randinit()命令获取一个随机整数,并根据该整数是什么,为变量分配一个字符串,然后通过tkinter标签的textvariable命令显示该字符串 类的概念代码:Python:如何接收随机字符串并将其显示到标签(tkinter)中?,python,tkinter,python-2.6,Python,Tkinter,Python 2.6,目标:从字符串列表(设置为变量)中,随机选取一个字符串,并将其显示在新的Tkinter窗口中(假设程序中已有一个)。另外,如何实现要在程序中运行的类?(这与我假设的目标不同。) 技术信息: 使用Python 2.6.8版(出于技术原因)和Pycharm IDE(社区版) 可能的解决方案:使用randinit()命令获取一个随机整数,并根据该整数是什么,为变量分配一个字符串,然后通过tkinter标签的textvariable命令显示该字符串 类的概念代码: from Tkinter import
from Tkinter import *
import random
class popUp():
def __init__(self):
top = self.top = Toplevel()
self.nth = 0
Label(top,text="Suggestion:").pack(side=TOP)
self.message()
Label(top,textvariable=self.inp)
def message(self):
self.nth = random.randint(490, 500)
if self.nth == 490:
self.inp = "Have a turkey!"
elif self.nth == 491:
self.inp = "Have a turkey!"
elif self.nth == 492:
self.inp = "Have a turkey!"
elif self.nth == 493:
self.inp = "Have a turkey!"
elif self.nth == 494:
self.inp = "Have a turkey!"
elif self.nth == 495:
self.inp = "Have a turkey!"
elif self.nth == 496:
self.inp = "Have a turkey!"
elif self.nth == 497:
self.inp = "Have a turkey!"
elif self.nth == 498:
self.inp = "Have a turkey!"
elif self.nth == 499:
self.inp = "Have a turkey!"
else:
self.inp = "Have a turkey!"
def main():
root.mainloop()
if __name__ == '__main__':
main()
我需要什么:对概念代码的更正、我可以使用的不同命令或使用列出的目标的不同代码
如果我遗漏了任何重要信息,请予以评论,并请彻底但迅速地回复
请注意在Python和一般情况下,我的编程回溯很少。有些概念可能需要解释。随机选择字符串的最简单方法是将它们全部放在一个列表中,然后使用
random.choice
。要更改标签中的文本,Tkinter为您提供了一个Stringvar类,该类将在标签值更改时保持标签最新。看起来您的self.inp
可能已经是一个了(在创建标签之前,您似乎缺少self.inp=Stringvar()
),但是您需要使用它的set方法,而不是重新分配它。把它们放在一起看起来像这样:
def message(self):
self.inp.set(random.choice(messages))
其中消息设置在类之外的某个位置 可以有多个stringvar()吗?我已经在程序的另一部分使用了其中两个。@Rick_Roll:你可以想要多少就有多少,但老实说,你不需要任何。您可以在不使用StringVars的情况下设置和更改标签的文本。@BryanOakley您会怎么做?@Rick\u Roll:保存对标签的引用(
self.label=label(…)
),然后使用configure(self.label.configure(random.choice(messages))
)有趣的…:)谢谢