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

时间:2015-01-03 21:25:39

标签: python tkinter python-2.6

目标:从字符串列表(设置为变量)中随机取一个,并在新的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和一般情况下。可能必须解释一些概念。

1 个答案:

答案 0 :(得分:0)

随机选择字符串的最简单方法是将它们全部放在列表中,然后使用random.choice。要更改标签中的文本,Tkinter会为您提供一个Stringvar类,以便在其值更改时使标签保持最新。看起来您的self.inp可能已经是一个(在创建标签之前似乎缺少self.inp = Stringvar()),但您需要使用其set方法而不是重新分配它。将它们放在一起看起来像这样:

def message(self):
   self.inp.set(random.choice(messages))

将消息设置在课堂外的某处。