2016-04-12 13 views
1

Tkinter kullanarak birden çok pencere oluşturmaya çalışıyorum, ancak şu ana kadar hiç bir başarıma sahip değilim ... Bir çocuk penceresi oluşturduğumda ve üzerine bir düğme koyduğumda, düğme Ebeveyn penceresi! Button(self, text=...)Tkinter - Butonu yanlış ekranda oluşturdu

Bu iyi bir uygulamadır: o da yoluyla yapılabilir böylece

self.button = Button(master = self, text = "Close",command = lambda: self.close_windows()) 

master bir widget ilk arg geçerli:

from tkinter import * 

class Login_screen(Frame): 
    def __init__(self,master): 
     Frame.__init__(self, master) 
     self.grid() 
     self.button1 = Button(text = "Open",command = lambda: self.open_login()) 
     self.button1.grid() 

    def open_login(self): 
     self.root2 = Toplevel() 
     self.root2.geometry("400x200") 
     self.app2 = Main_screen(self.root2) 

class Main_screen(Frame): 
    def __init__(self,master): 
     Frame.__init__(self,master) 
     self.grid() 
     self.button = Button(text = "Close",command = lambda: self.close_windows()) 
     self.button.grid() 

    def close_windows(self): 
     self.grid_forget() 

root = Tk() 
root.geometry("800x600") 
app = Login_screen(root) 
root.mainloop() 

cevap

2

Sen efendi bağımsız değişkenle Button() sağlamanız gerekmektedir ve her zaman açıkça master sağlamayı alışkanlık haline getirmelisiniz, aksi takdirde Tk bu argümanı None'a yönlendirir ve root penceresine yerleştirir.