我想在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的东西。 –