2
第一篇文章在這裏。Lambda意外地評估
我想製作一個電影列表。電影將顯示在Tkinter的列表中。該計劃是當您點擊更新按鈕時,程序將更新旁邊的標籤。問題在於無論您點擊哪個按鈕,都會更新最後一個標籤。我想這是因爲
lambda: self.update_rating(x)
在運行時計算,所以爲x。我希望x是它在特定循環上的內容,而不是按鈕被點擊時的範圍之外的內容。
我是新來的蟒蛇所以任何幫助表示讚賞
代碼:
from Tkinter import *
class Application(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.grid()
self.create_widgets()
def create_widgets(self):
self.movies = list()
for x in range(0, 10):
movie = list()
rating = Label(self, text = "Rating: NA")
rating.grid(row = x, column = 0, columnspan = 1, sticky = W)
movie.append(rating)
update = Button(self, text = "update", command = lambda: self.update_rating(x))
update.grid(row = x, column = 1, columnspan = 1, sticky = W)
movie.append(update)
self.movies.append(movie)
def update_rating(self, num):
self.movies[num][0]["text"] = "rating updated"
root = Tk()
root.title("Movie Sorter")
root.geometry("640x480")
app = Application(root)
root.mainloop()
謝謝,我被困在這太久了。 – Henry 2013-02-20 12:54:34
@亨利 - 這是一個常見問題。 – mgilson 2013-02-20 12:55:26