Python:如何接收随机字符串并将其显示到标签(tkinter)中?
Python: How does one recieve a random string, and display it into a label (tkinter)?
目标:从字符串列表(设置为变量)中随机取一个,并在新的Tkinter中显示window(假设已经有一个在节目中)。另外,如何实现 class 在程序中运行? (这与我假设的 objective 不同。)
技术资料:
使用 Python 版本 2.6.8(出于技术原因)& Pycharm IDE(社区版本)
可能的解决方案:使用 randinit() 命令获取随机整数,并根据整数是什么,将字符串分配给变量,然后通过tkinter 标签的 textvariable 命令。
类的概念代码:
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()
我需要: 对概念代码的更正,我可以使用的不同命令,或使用列出的 objective 的不同代码。
如果我遗漏了任何重要信息,请发表评论,并请尽快回复。
请注意 我的编程后台很少,在 Python 中并且一般。可能需要解释一些概念。
随机选择一个字符串的最简单方法是将它们全部放在一个列表中,然后使用random.choice
。为了更改标签中的文本,Tkinter 为您提供了一个 Stringvar class,它将在标签值发生变化时使标签保持最新。看起来你的 self.inp
可能已经是一个(你似乎在创建标签之前缺少 self.inp = Stringvar()
),但你需要使用它的 set 方法而不是重新分配它。将它们放在一起看起来像这样:
def message(self):
self.inp.set(random.choice(messages))
消息设置在 class 之外的某处。
目标:从字符串列表(设置为变量)中随机取一个,并在新的Tkinter中显示window(假设已经有一个在节目中)。另外,如何实现 class 在程序中运行? (这与我假设的 objective 不同。)
技术资料: 使用 Python 版本 2.6.8(出于技术原因)& Pycharm IDE(社区版本)
可能的解决方案:使用 randinit() 命令获取随机整数,并根据整数是什么,将字符串分配给变量,然后通过tkinter 标签的 textvariable 命令。
类的概念代码:
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()
我需要: 对概念代码的更正,我可以使用的不同命令,或使用列出的 objective 的不同代码。
如果我遗漏了任何重要信息,请发表评论,并请尽快回复。
请注意 我的编程后台很少,在 Python 中并且一般。可能需要解释一些概念。
随机选择一个字符串的最简单方法是将它们全部放在一个列表中,然后使用random.choice
。为了更改标签中的文本,Tkinter 为您提供了一个 Stringvar class,它将在标签值发生变化时使标签保持最新。看起来你的 self.inp
可能已经是一个(你似乎在创建标签之前缺少 self.inp = Stringvar()
),但你需要使用它的 set 方法而不是重新分配它。将它们放在一起看起来像这样:
def message(self):
self.inp.set(random.choice(messages))
消息设置在 class 之外的某处。