2017-04-05 46 views
0

我想要以下嵌套的PanedWindows到正確調整大小Python2/Windows7:嵌套的Tkinter PanedWindows

垂直PanedWindow應該將窗口分成兩半,水平應該將上窗格水平分割成兩半。在每個窗格中,樹視圖都是網格。那些TreeView有不同數量的列,並且有一個滾動條連接到它們。

感謝您的幫助!

# -*- coding: utf-8 -*- 

import Tkinter as tk 
import ttk 


class Test(tk.Tk): 

    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     self.createUI() 
     self.mkLayout() 
     self.configResize() 
     self.mainloop() 

    def createUI(self): 
     self.paneV = ttk.PanedWindow(master=self, orient=tk.VERTICAL) 
     self.paneH = ttk.PanedWindow(master=self.paneV, orient=tk.HORIZONTAL) 
     self.frmA = ttk.Frame(master=self.paneH) 
     self.frmB = ttk.Frame(master=self.paneH) 
     self.frmC = ttk.Frame(master=self.paneV) 
     self.trvA = ttk.Treeview(master=self.frmA, 
           columns=('1', '2', '3', '4', '5', '6', '7', 
              '8', '9', '10')) 
     self.trvB = ttk.Treeview(master=self.frmB, columns=('1', '2', '3')) 
     self.trvC = ttk.Treeview(master=self.frmC, 
           columns=('1', '2', '3', '4', '5', '6')) 
     self.scrA = ttk.Scrollbar(master=self.frmA, orient=tk.HORIZONTAL, 
            command=self.trvA.xview) 
     self.scrB = ttk.Scrollbar(master=self.frmB, orient=tk.HORIZONTAL, 
            command=self.trvB.xview) 
     self.scrC = ttk.Scrollbar(master=self.frmC, orient=tk.HORIZONTAL, 
            command=self.trvC.xview) 

    def mkLayout(self): 
     self.trvA.grid(row=0, column=0, sticky=tk.NSEW) 
     self.trvB.grid(row=0, column=0, sticky=tk.NSEW) 
     self.trvC.grid(row=0, column=0, sticky=tk.NSEW) 
     self.scrA.grid(row=1, column=0, sticky=tk.EW) 
     self.scrB.grid(row=1, column=0, sticky=tk.EW) 
     self.scrC.grid(row=1, column=0, sticky=tk.EW) 
     self.paneV.grid(row=0, column=0, sticky=tk.NSEW) 
     self.paneH.add(self.frmA, weight=1) 
     self.paneH.add(self.frmB, weight=1) 
     self.paneV.add(self.paneH, weight=1) 
     self.paneV.add(self.frmC, weight=1) 

    def configResize(self): 
     self.columnconfigure(0, weight=1) 
     self.rowconfigure(0, weight=1) 

Test() 

回答

0

好吧,我解決了這個:

# -*- coding: utf-8 -*- 

import Tkinter as tk 
import ttk 


class Test(tk.Tk): 

    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     self.geometry('800x600') 
     self.createUI() 
     self.mkLayout() 
     self.configResize() 
     self.mainloop() 

    def createUI(self): 
     self.paneV = ttk.PanedWindow(master=self, orient=tk.VERTICAL) 
     self.paneH = ttk.PanedWindow(master=self.paneV, orient=tk.HORIZONTAL) 
     self.frmA = ttk.Frame(master=self.paneH) 
     self.frmB = ttk.Frame(master=self.paneH) 
     self.frmC = ttk.Frame(master=self.paneV) 
     self.trvA = ttk.Treeview(master=self.frmA, 
           columns=('1', '2', '3', '4', '5', '6', '7', 
              '8', '9', '10')) 
     self.trvB = ttk.Treeview(master=self.frmB, columns=('1', '2', '3')) 
     self.trvC = ttk.Treeview(master=self.frmC, 
           columns=('1', '2', '3', '4', '5', '6')) 
     self.scrA = ttk.Scrollbar(master=self.frmA, orient=tk.HORIZONTAL, 
            command=self.trvA.xview) 
     self.scrB = ttk.Scrollbar(master=self.frmB, orient=tk.HORIZONTAL, 
            command=self.trvB.xview) 
     self.scrC = ttk.Scrollbar(master=self.frmC, orient=tk.HORIZONTAL, 
            command=self.trvC.xview) 
     self.trvA['xscroll'] = self.scrA.set 
     self.trvB['xscroll'] = self.scrB.set 
     self.trvC['xscroll'] = self.scrC.set   

    def mkLayout(self): 
     self.paneV.grid(row=0, column=0, sticky=tk.NSEW) 
     self.paneH.add(self.frmA, weight=1) 
     self.paneH.add(self.frmB, weight=1) 
     self.paneV.add(self.paneH, weight=1) 
     self.paneV.add(self.frmC, weight=1) 
     self.trvA.grid(row=0, column=0, sticky=tk.NSEW) 
     self.trvB.grid(row=0, column=0, sticky=tk.NSEW) 
     self.trvC.grid(row=0, column=0, sticky=tk.NSEW) 
     self.scrA.grid(row=1, column=0, sticky=tk.EW) 
     self.scrB.grid(row=1, column=0, sticky=tk.EW) 
     self.scrC.grid(row=1, column=0, sticky=tk.EW) 


    def configResize(self): 
     self.columnconfigure(0, weight=1) 
     self.rowconfigure(0, weight=1) 
     self.frmA.grid_propagate(0) 
     self.frmB.grid_propagate(0) 
     self.frmC.grid_propagate(0) 
     self.frmA.columnconfigure(0, weight=1) 
     self.frmB.columnconfigure(0, weight=1) 
     self.frmC.columnconfigure(0, weight=1) 
     self.frmA.rowconfigure(0, weight=1) 
     self.frmB.rowconfigure(0, weight=1) 
     self.frmC.rowconfigure(0, weight=1) 

Test()