2013-03-13 4 views
0

저는 Tkinter 프로그래밍을 처음 접했습니다.함수를 호출하지 않고 창을 만드는 이유는 무엇입니까?

데이터

I 다음 Tkinter의 코드가 있습니다 http://i48.tinypic.com/675xf7.jpg

그리고에

뒤에 창을 이동 :

##Program to print something or exit 

def say_hi(): 
    second = Tk() 
    Label1 = Label(second,text="HI!") 
    Label1.pack() 

from Tkinter import * 

root = Tk() 

r = Button(root,text="QUIT",fg="red",command=quit) 
r.pack() 

b = Button(root,text="Say something",fg="red",bg="black",command=say_hi()) 
b.pack() 

root.mainloop() 

이것은 다음과 같은 출력을 준를, http://i50.tinypic.com/1431f2b.jpg

DOUBT

이유는 기능 say_hi()없이 second 창 개구가 호출되고?

어떻게 만드시겠습니까?

현재 창에서 새 창이나 프레임을 시작하거나 버튼을 누른 후에 만 ​​HI을 인쇄 할 수 있도록 현재 창에 레이블을 인쇄하는 방법은 무엇입니까?

대부분의 경우 눈에 띄지 않게 콘솔에 인쇄하고 싶지 않습니다.

: 코드에서 실수가

b = Button(root,text="Say 
     something",fg="red",bg="black",command=say_hi) b.pack() 
+0

당신은 Tk''의 예를 한 번 이상 작성해서는 안됩니다; Tkinter는 그런 식으로 사용하도록 설계되지 않았으며 예상치 못한 방식으로 작동합니다. 하나 이상의 창이 필요하면'Toplevel' 인스턴스를 생성하십시오. –

답변

2

say_hi()이 함수를 호출합니다 (), say_hi 후 삭제 ()say_hi

command에서 수정 된 코드는 이렇게이다 :

##Program to print something or exit 

def say_hi(): 
    second = Tk() 
    Label1 = Label(second,text="HI!") 
    Label1.pack() 

from Tkinter import * 

root = Tk() 

r = Button(root,text="QUIT",fg="red",command=quit) 
r.pack() 

b = Button(root,text="Say something",fg="red",bg="black",command=say_hi) 
b.pack() 

root.mainloop() 
+0

대단히 감사합니다! 그것은 say_hi 다음에'()'를 삭제 한 후에 작동합니다. – IcyFlame

+0

선생님, 왜 이런 일이 일어 났는지 말씀해 주시겠습니까? – IcyFlame

+0

'command' 매개 변수는 함수의 결과가 아니라 함수 자체가되어야합니다. – Matthias

0

있습니다 :

SPECS

비주얼 파이썬 Tkinter를 IDE 2.6

관련 문제