나는 잠시 동안이 예를 찾고있다. 내 작품을위한 지루한 것들을 자동화하기 위해 함께 몇 개의 스크립트를 묶는 간단한 애플리케이션을 만들려고 노력 중이다. 내가 직면 한 문제는 일단 첫 번째 스크립트가 실행되면 앱에 창을 스왑하도록 요청하여 두 번째 매개 변수가 스크립트의 해당 부분에 대한 매개 변수를 입력 할 수 있도록 표시되지만 첫 번째 스크립트를 완료해도 아무런 오류가 발생하지 않습니다. 그러나 나는 또한 교환을 얻지 않는다.Tkinter Windows 기능 교환하기
모든 예제에서 버튼 누름시 창을 변경해야하지만이 작업은 필요하지 않습니다. 이 버튼은 스크립트 메소드를 호출하고 완료되면 show_frames 메소드를 호출합니다.
나는 show_frames를 부르는 방식에 문제가 있다는 것을 확신합니다. 누군가가 도와 주면 정확한 방향으로 안내 할 수있을 것입니다.
나는 다른 사람들이 OOP 기반이 아닌 나의 첫번째 OOP 기반 TKinter 응용 프로그램입니다.
관련 코드 : 어떤 도움
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