Tkinter在功能上交换Windows

时间:2016-12-05 13:40:37

标签: python user-interface tkinter

我一直在寻找这个例子,因为它让我卡住了。我正在尝试创建一个简单的应用程序,将一些脚本组合在一起,为我的工作自动化一些无聊的东西。我面临的问题是,一旦第一个脚本运行,我要求应用程序交换窗口,所以第二个显示允许我输入我的脚本的那部分参数,但是在完成第一个脚本没有任何反应,我得到没有错误但我也没有交换。

我发现的所有示例都要求您在按下按钮时更改窗口,但我不希望这样。该按钮调用脚本方法,该方法在完成后调用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)

为任何帮助干杯!

0 个答案:

没有答案