2016-12-05 7 views
-2

私はしばらくこの例を探しています。私は私の仕事のためにいくつかの退屈なものを自動化するために一緒にいくつかのスクリプトを束ねるために簡単なアプリケーションを作成しようとしています。私が直面している問題は、最初のスクリプトが実行されると、アプリケーションにウィンドウをスワップするように依頼して、スクリプトのその部分のパラメータを入力できるように2番目が表示されるようにします。私はまた交換を取得しません。Tkinter Windowsの機能を交換する

私が見つけたすべての例では、ボタンを押したときにウィンドウを変更する必要がありますが、これは必要ありません。このボタンはスクリプトメソッドを呼び出し、終了時に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

すべてのメソッドでそれを使用することができますProcessPageの周り:.show_frame(ProcessPage)しかし、これは違いはありません。 –

+0

'print()'を使ってプログラム内で何が起こっているのかを知ることができます - 実行されている部分、偽りのある値など。 – furas

+0

なぜ 'lambda'を使うのですか?関数を作成しますが、実行しません。上記のように@ furasの – furas

答えて

2

あなたがRenamePage

def __init__(self, parent, controller): 

controllorを送っていますが、クラスのプロパティ

self.controller = controller 

を作成する必要があり、その後、あなたは私がちょうど" 追加

self.controller.show_frame(ProcessPage) 
関連する問題