2014-03-28 4 views
2

저는 방금 인터넷에서 튜토리얼 등으로 파이썬으로 프로그래밍하는 법을 배우기 시작했습니다. 나는 현재 사용자가 입력 상자에 여러 이름을 입력 한 다음 이름 중 하나를 임의로 선택할 수있는 프로그램을 작성하려고합니다.Python과 tkinter : 이름을 입력하고 무작위로 하나를 선택하십시오.

명령 줄을 사용하여이 작업을 관리했지만 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 코드 어디에서이 입력해야합니까? 여러 곳을 시도했지만 제대로 작동하지 못했습니다. 나는이 일이 상당히 쉬워야한다고 생각한다. 어떤 도움이라도 대단히 감사 할 것입니다.

감사

답변

0

당신의 Button 위젯의 command이 기능은 input()라고 귀하의 경우, 콜백 함수에 연결되어 있습니다. 입력은 내장 함수로 이미 존재하고 그 함수가 무엇을하는지 다시 정의하고 싶지 않기 때문에이 함수의 훌륭한 이름은 아닙니다. 또 다른 참고 사항으로, time.sleep()은 GUI와 충돌하고 프로세스 흐름이 잠들 때 업데이트를 비활성화하기 때문에 콜백에서 time.sleep()을 제거해야합니다.

콜백 함수 내에서 이전과 같은 방법으로 입력을 처리 한 다음 원하는대로 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

관련 문제