Python:如何接收随机字符串并将其显示到标签(tkinter)中?

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

目标:从字符串列表(设置为变量)中,随机选取一个字符串,并将其显示在新的Tkinter窗口中(假设程序中已有一个)。另外,如何实现要在程序中运行的类?(这与我假设的目标不同。)

技术信息: 使用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()
我需要什么:对概念代码的更正、我可以使用的不同命令或使用列出的目标的不同代码

如果我遗漏了任何重要信息,请予以评论,并请彻底但迅速地回复


请注意在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))
)有趣的…:)谢谢