【发布时间】:2015-04-28 07:26:27
【问题描述】:
我想做的是找到一种方法来从除 def __init__ 以外的方法/函数更改 Frame
我用来更改和管理框架的主要课程是:
class ShopCounter(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 = {}
for i in (PageOne, PageTwo):
frame = i(container, self)
self.frames[i] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.showFrame(Login)
def showFrame(self, cont):
frame = self.frames[cont]
frame.tkraise()
我从这里遇到的问题是,当我创建一个新窗口时,例如
class PageOne (tk.Frame):
def __init__ (self, parent, controller):
tk.Frame.__init__(self, parent)
lbl = tk.Label(self, text="Page 1")
lbl.pack()
这也在 __init__ 中 因为这会调用 nextPage 函数(稍后显示) 下一页()
但是我需要从 CSV 电子表格中读取以检查此人是否输入了用户名和密码(为方便起见,没有放置检查代码或输入字段)然后我发现我需要将框架从PageOne 类中的不同函数
然后我遇到了一个问题,现在必须在这个新函数 s 中通过函数的括号在调用它时定义一个控制器,这是一个问题,因为我不知道如何做到这一点,只是把它作为 __init__ 方法中的参数
快速示例:
说类中的函数是这样的..
def nextPage (self, controller):
controller.showFrame(PageTwo)
IDLE 然后告诉我这个函数“控制器”的参数丢失了,但我不知道如何手动设置它
【问题讨论】:
标签: python oop tkinter initialization