Python 3.4 Tkinter - 无法为 PanedWindow 中的框架指定大小

Python 3.4 Tkinter - not able to give a size to frames in PanedWindow

from tkinter import *
from tkinter import ttk

_root = Tk()

_F_Cassa = PanedWindow(_root, orient = HORIZONTAL)
_F_Cassa.pack(fill = BOTH, expand = True )

_F_Right = Frame(_F_Cassa)
_F_Left = Frame(_F_Cassa)


_F_Cassa.add(_F_Left)
_F_Cassa.add(_F_Right)

_L_NomeS = Button(_F_Left, text = "Sinistra")
_L_NomeS.grid(row = 0, column = 0)


_L_NomeD = Button(_F_Right, text = "Destra")
_L_NomeD.grid(row = 0, column = 0)


_root.mainloop()

我正在尝试构建一个包含 PanedWindow 小部件的应用程序,该小部件包含 2 个框架(左和右),然后用 "standard" 小部件(如按钮、标签等)填充。 .问题是我得到了这个结果:

但我想要的是这样的:

我尝试为框架添加宽度和高度,但没有成功。

所以一切都清楚了:我没有使用 ttk 模块中的小部件,只是普通的 tk。

事实上,您不能像您尝试的那样直接更改 Frame 实例的尺寸,因为两个框架都是 PaneWindow 子窗口小部件。

要解决您的问题,您需要调查 paneconfig() 方法,如下所示:

_F_Cassa.paneconfig(_F_Left, width = 120, height = 400, sticky = E+W+S+N)
_F_Cassa.paneconfig(_F_Right, width =  200, height = 400, sticky = E+W+S+N)

完整节目:

from tkinter import *

_root = Tk()
_root.title("BEGUERADJ PaneWindow")

_F_Cassa = PanedWindow(_root, orient = HORIZONTAL)
_F_Cassa.pack(fill = BOTH, expand = True )
"""
Every column and row has a "weight" grid option associated with it, 
which tells it how much it should grow if there is extra room in the 
_F_Cassa to fill. By default, the weight of each column or row is 0, 
meaning don't expand to fill space.
"""
_F_Cassa.grid_rowconfigure(0, weight = 1)
_F_Cassa.grid_columnconfigure(0, weight = 1)

# I set background colors just to highlight the results
_F_Right = Frame(_F_Cassa, bg = "blue")
_F_Left = Frame(_F_Cassa, bg = "yellow")    

_F_Cassa.add(_F_Left)
_F_Cassa.add(_F_Right)

_F_Right.grid(row = 0, column = 1)
_F_Left.grid(row = 0, column = 0)

_L_NomeS = Button(_F_Left, text = "Sinistra")
_L_NomeS.grid(row = 0, column = 0)


_L_NomeD = Button(_F_Right, text = "Destra")
_L_NomeD.grid(row = 0, column = 0)   

# Resize frame widgets:
_F_Cassa.paneconfig(_F_Left, width = 120, height = 400, sticky = E+W+S+N)
_F_Cassa.paneconfig(_F_Right, width =  200, height = 400, sticky = E+W+S+N)


_root.mainloop()

演示