我一直在寻找这个例子,因为它让我卡住了。我正在尝试创建一个简单的应用程序,将一些脚本组合在一起,为我的工作自动化一些无聊的东西。我面临的问题是,一旦第一个脚本运行,我要求应用程序交换窗口,所以第二个显示允许我输入我的脚本的那部分参数,但是在完成第一个脚本没有任何反应,我得到没有错误但我也没有交换。
我发现的所有示例都要求您在按下按钮时更改窗口,但我不希望这样。该按钮调用脚本方法,该方法在完成后调用show_frames方法。
我很确定这个问题与我调用show_frames的方式有关,如果有人可以提供帮助并指出我正确的方向,我会非常满满。
我还要注意这是我的第一个基于OOP的TKinter应用程序我的其他人还没有基于OOP。
相关守则:
class bossinit(tk.Tk):
def __init__(self,*args,**kwargs):
tk.Tk.__init__(self,*args,**kwargs)
tk.Tk.iconbitmap(self,default="hieta_icon.ico")
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 F in (RenamePage,ProcessPage):
frame = F(container,self)
self.frames[F] = frame
frame.grid(row=0,column=0,sticky="nsew")
#frame = RenamePage(container,self)
#self.frames[RenamePage] = frame
#frame.grid(row=0,column=0,sticky="nsew")
self.show_frame(RenamePage)
def show_frame(self,cont):
frame = self.frames[cont]
frame.tkraise()
class RenamePage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
ttk.Frame.__init__(self,parent)
self.v1 = tk.StringVar()
v2 = tk.StringVar()
title1 = ttk.Label(self,text="Re-naming Parameters:")
title1.grid(row=0,column=0,padx=10,pady=10)
self.dirLabel = ttk.Label(self,text="Working Directory:")
self.dirLabel.grid(row=1,column=0,padx=10,pady=10)
self.wdDirRe = ttk.Entry(self,width=40)
self.wdDirRe.config(state='readonly')
self.wdDirRe.grid(row=1,column=1,columnspan=2,padx=10,pady=10)
findDirBut = ttk.Button(self,text="...",command=self.findWdDirectory)
findDirBut.grid(row=1,column=3,padx=10,pady=10)
startNumLbl = ttk.Label(self,text="Start Number:")
startNumLbl.grid(row=1,column=4,padx=10,pady=10)
self.startNumEnt = ttk.Entry(self,width=5)
self.startNumEnt.grid(row=1,column=5,padx=10,pady=10)
label = ttk.Label(self,text="Output Directory:")
label.grid(row=2,column=0,padx=10,pady=10)
self.outDir = ttk.Entry(self,width=40,textvariable=v2)
self.outDir.config(state='readonly')
self.outDir.grid(row=2,column=1,padx=10,pady=10,columnspan=2)
button = ttk.Button(self,text="...",command=self.findOutDirectory)
button.grid(row=2,column=3,padx=10,pady=10)
label = ttk.Label(self,text="End Number:")
label.grid(row=2,column=4,padx=10,pady=10)
self.endNumEnt = ttk.Entry(self,width=5)
self.endNumEnt.grid(row=2,column=5,padx=10,pady=10)
label = ttk.Label(self,text="Write Start:")
label.grid(row=3,column=4,padx=10,pady=10)
self.writeNumEnt = ttk.Entry(self,width=5)
self.writeNumEnt.grid(row=3,column=5,padx=10,pady=10)
label = ttk.Label(self,text="Preffix:")
label.grid(row=3,column=0,pady=10)
self.preffix = ttk.Entry(self,width=5)
self.preffix.grid(row=3,column=1,pady=10)
label = ttk.Label(self,text="Suffix:")
label.grid(row=3,column=2,pady=10)
self.suffix = ttk.Entry(self,width=5)
self.suffix.grid(row=3,column=3,pady=10)
var = False
progressBar = ttk.Progressbar(self,orient="horizontal",length=300,mode="determinate")
progressBar.grid(row=4,column=0,padx=10,pady=10,columnspan=2)
check = ttk.Checkbutton(self,text="Run defaults",variable=var)
check.v = var
check.grid(row=4,column=2,padx=30,pady=10)
button = ttk.Button(self,text="Run",width=20,command=self.run)
button.grid(row=4,column=4,padx=10,pady=10,columnspan=2)
def run(self):
print("- - - RUN - - -")
#print(controller.validate(self))
print(self.validate)
if(self.validate() == True):
##Script Code
else:
print("Validated - Not Acceptable")
lambda: controller.show_frame(ProcessPage)
为任何帮助干杯!