2017-07-07 27 views
2

我正在使用Tkinter GUI,我想在其單獨的類中添加窗口大小和定位控制。 我的結構,像這樣:使用類在另一個類中設置參數 - Python

class MainApp(tk.Tk): 

    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     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.winsize= WinSize(container, 700, 500, 650, 450, True, True) 

我想WinSize設置主應用程序的幾何形狀以及處理 的minsizeresizeable在中winsize類。

class WinSize: 

    def __init__(self, container, width, height, minx, miny, sizeablex, sizeabley): 
     self.container = container 
     self.width = width 
     self.height = height 
     self.minx = minx 
     self.miny = miny 
     self.sizeablex = sizeablex 
     self.sizeabley = sizeabley 
     self.ws = self.container.winfo_screenwidth() 
     self.hs = self.container.winfo_screenheight() 
     self.xpos = (self.ws/2) - (self.width/2) 
     self.ypos = (self.hs/2) - (self.height/2) 

我已經得到了廣泛的搜索和發現如何讓那些在WinSize類實現對特定實例和/或幀無解/指導。 我想使用相同的類來設置大小和其他屬性彈出消息/框架,將顯示其他信息。 主要的GUI類是從@Bryan Oakley的著名的例子採取:https://stackoverflow.com/a/7557028/7703610

如何調用從傳統知識geometryminsizeresizeable,而不必在我使用winsize類又繼承傳統知識和然後將其應用到特定的實例?

回答

1

有兩種解決方案。您可以將窗口傳遞給WinSize()而不是容器,或者您可以使用winfo_toplevel方法獲取特定窗口小部件的窗口。

第一個解決方案是這樣的:

class MainApp(tk.Tk): 

    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     ... 
     self.winsize= WinSize(self, 700, 500, 650, 450, True, True) 

class WinSize: 

    def __init__(self, window, width, height, minx, miny, sizeablex, sizeabley): 
     self.window = window 
     ... 
     self.window.geometry("%d%d+%d+%d" % (width, height, minx, miny)) 
     ... 

第二個解決方案不需要改變主要的應用程序。只需將以下內容添加到WinSize

class WinSize: 
    def __init__(...): 
     ... 
     window = self.container.winfo_toplevel() 
     self.window.geometry("%d%d+%d+%d" % (width, height, minx, miny)) 
+0

謝謝@Bryan Oakley。愛你如何簡單地解決你的問題。希望你製作了一套視頻教程,並正確地教導我們其他人。只是一個簡單的問題......是在第一個例子中將'self'傳遞給了'window'變量? –

相關問題