2013-12-21 87 views
2

我想單擊按鈕時更新Tkinter標籤。 下面的代碼工作正常:發送帶有按鈕命令的變量(python 3.3/tkinter)

import tkinter 
from tkinter import * 
window = tkinter.Tk() 
v="start" 
lbl = Label(window, text=v) 
lbl.pack() 
def changelabel(): 
    v ="New Text!" 
    lbl.config(text=v) 
btn=Button(window, text="Change label text", command=changelabel) 
btn.pack() 
window.mainloop() 

但更多的動力,我想新的文本發送到changelabel功能。

我試了很多東西。這是我認爲應該工作,但它馬上打印「新的動態文本」,而不是等待我的點擊...

import tkinter 
from tkinter import * 
window = tkinter.Tk() 
v="start" 
lbl = Label(window, text=v) 
lbl.pack() 
def changelabel(v): 
    lbl.config(text=v) 
v ="New, dynamic text!" 
btn=Button(window, text="Change label text", command=changelabel(v)) 
btn.pack() 
window.mainloop() 

你明白我的錯誤嗎?

回答

2

您需要將呼叫「隱藏」至changelabel。要做到這一點,最簡單的方法是使用一個lambda

btn=Button(window, text="Change label text", command=lambda: changelabel(v)) 

否則,當Python的貫穿你的代碼,它看到這一點:

changelabel(v) 

將其解釋爲一個有效的函數調用,運行時,它。

+0

哇,那很快!謝謝!!! – Enthuziast