私はしばらくこの例を探しています。私は私の仕事のためにいくつかの退屈なものを自動化するために一緒にいくつかのスクリプトを束ねるために簡単なアプリケーションを作成しようとしています。私が直面している問題は、最初のスクリプトが実行されると、アプリケーションにウィンドウをスワップするように依頼して、スクリプトのその部分のパラメータを入力できるように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)
乾杯! "
すべてのメソッドでそれを使用することができますProcessPageの周り:.show_frame(ProcessPage)しかし、これは違いはありません。 –
'print()'を使ってプログラム内で何が起こっているのかを知ることができます - 実行されている部分、偽りのある値など。 – furas
なぜ 'lambda'を使うのですか?関数を作成しますが、実行しません。上記のように@ furasの – furas