Python& tkinter:输入名称,然后随机选择一个

时间:2014-03-28 23:33:17

标签: python random tkinter

我刚开始学习如何使用互联网上的教程等编写Python程序。我目前正在尝试构建一个程序,用户可以在输入框中输入多个名称,然后随机选择其中一个名称。

我设法使用命令行执行此操作,但在将其构建为GUI时,我正在努力使其工作。对于我使用的命令行代码:

import random
import time

print ("Hello!")

userInput = input ('Please enter the names:')
time.sleep (5) 

userInput = str(userInput).split () 

name = random.choice (userInput)

print ("Its",name)

我想知道如何创建相同的程序,但在GUI中运行它。我到目前为止的代码是:

import random
import time
from tkinter import *
root = Tk()


def input():
    time.sleep (5)
    mytext=userInput.get()
    label2 = Label(root,text=mytext).pack()

userInput = StringVar()


root.geometry("500x500") 
root.title("Tkinter GUI")


Label1 = Label(root,text="Welcome to my program").pack() 

entry = Entry(root,textvariable=userInput).pack()



Button1 = Button(root,text="Go",command=input).pack() 


root.mainloop()

对于我的基于GUI的代码,我可以输入一些名称等,但我不知道如何随机选择一个。我还可以使用.split()& random.choice根据我的基于文本的代码?在我的GUI代码中我需要输入这个?我尝试过几个不同的地方但却无法让它发挥作用。我认为这应该是相当容易做的事情?任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

command窗口小部件的Button附加到回调函数,在这种情况下,此函数称为input()。输入对于此函数来说不是一个很好的名称,因为它已经作为内置函数存在,并且您不想重新定义它的作用。另请注意,您应该从回调中删除time.sleep(),因为time.sleep()与GUI冲突并在进程流处于睡眠状态时禁用对它的更新。

在回调函数中,您可以像以前一样处理输入,然后将其返回到您想要的GUI。

示例:

from tkinter import *
import random


def callback():
    nameList = userInput.get().split()
    name = random.choice(nameList)
    Label(root, text=name).pack()

root = Tk()

userInput = StringVar()

ent = Entry(root, textvariable=userInput)
ent.pack()
btn = Button(root, text="Go", command=callback)
btn.pack()

root.mainloop()

Tkinter上有大量的文档和示例。从这里开始:http://effbot.org/tkinterbook/tkinter-index.htm