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()
演示
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()