我想在python3中使用tkinter
代碼一個非常簡單的遊戲。這是一個連續的遊戲,玩了很多時間。我的問題是,在一段時間結束時,點擊「下一個時間段」按鈕時,下一個時間段不會加載。這裏是我的代碼:幀沒有加載tkinter
import tkinter as tk
from tkinter import ttk
class Game(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side='top', fill='both', expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
F=Period
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky='nsew')
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class Period(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
firstOffer = 5
labelOffer = tk.Label(self, anchor='center', text=str(firstOffer))
labelOffer.place(anchor='center', relx=0.6, rely=0.5)
buttonAcc = ttk.Button(self, text='Accept', command=lambda: self.PeriodSummary(parent, controller))
buttonAcc.place(anchor='center', relx=0.35, rely=0.5)
def PeriodSummary(self, parent, controller):
buttonNextPeriod = ttk.Button(self, text='Next Period', command=lambda: controller.show_frame(Period))
buttonNextPeriod.place(anchor='center', relx=0.5, rely=0.75, width=200, height=80)
app = Game()
app.wm_state('zoomed')
app.mainloop()
當用戶點擊「下一步週期」運行代碼時
可以看出,沒有任何反應。我希望它開始一個新的時期。我相信我對Python中的對象編程編程有不正確的理解。任何指針將不勝感激,謝謝。
你做了什麼來調試呢?你是否證實了'show_frame'方法被調用?如果您刪除'lambda'並使用自定義函數,則更容易。然後,您可以更輕鬆地添加打印功能或使用調試器停止。 –
謝謝@BryanOakley。我只是做了你的建議(在'show_frame'函數中增加了一個'print'語句,事實上'show_frame'沒有被調用,但是我不明白爲什麼在點擊按鈕時不會調用它。 – splinter
爲了複製這個問題,你真的需要numpy嗎?如果不是,你需要將它壓縮成不依賴於numpy的東西。 –