Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 窗格窗口大小调整问题_Python 3.x_Tkinter - Fatal编程技术网

Python 3.x 窗格窗口大小调整问题

Python 3.x 窗格窗口大小调整问题,python-3.x,tkinter,Python 3.x,Tkinter,我一直在为我的应用程序布局尝试panedWindows,但当窗口调整大小时,我遇到了问题。这是我开始使用的布局: 窗格也可以按我的需要拖动,但我想指定哪些窗格可以展开以填充根窗口,哪些窗格保持特定的宽度。例如,当我向右或向左拖动窗口时,扩展大小上的窗格会扩展以填充额外的空间。我只希望中间窗格展开,仅在拖动窗扇时左右窗格展开: 像这样: 当窗格使用pack geometry manager进行管理时,我可以告诉边缘窗格保持特定的宽度,并告诉中心窗格展开。如何使用窗格窗口实现类似的布局 下面是

我一直在为我的应用程序布局尝试panedWindows,但当窗口调整大小时,我遇到了问题。这是我开始使用的布局:

窗格也可以按我的需要拖动,但我想指定哪些窗格可以展开以填充根窗口,哪些窗格保持特定的宽度。例如,当我向右或向左拖动窗口时,扩展大小上的窗格会扩展以填充额外的空间。我只希望中间窗格展开,仅在拖动窗扇时左右窗格展开:

像这样:

当窗格使用pack geometry manager进行管理时,我可以告诉边缘窗格保持特定的宽度,并告诉中心窗格展开。如何使用窗格窗口实现类似的布局

下面是一个简单的工作示例:

import tkinter

root = tkinter.Tk()
root.geometry("480x200+200+200")
root.title("Paned Window Example")

main = tkinter.PanedWindow()

main.pack(expand = 1, fill = "both")

pane1 = tkinter.Frame(width = 90, bg = "red")
pane2 = tkinter.Frame(width = 310, bg = "blue")
pane3 = tkinter.Frame(width = 90, bg = "red")

for pane in pane1, pane2, pane3 : main.add(pane)

root.mainloop()

将窗格添加到
窗格窗口
时,可以使用
拉伸
选项。它采用以下值:“始终”、“第一”、“最后”、“中间”和“从不”。 您可以在中获得更完整的描述

在您的情况下,侧窗格使用“从不”,中间窗格使用“始终”:

import tkinter

root = tkinter.Tk()
root.geometry("480x200+200+200")
root.title("Paned Window Example")

main = tkinter.PanedWindow()

main.pack(expand=True, fill="both")

pane1 = tkinter.Frame(width=90, bg="red")
pane2 = tkinter.Frame(width=310, bg="blue")
pane3 = tkinter.Frame(width=90, bg="red")

main.add(pane1, stretch='never')
main.add(pane2, stretch='always')
main.add(pane3, stretch='never')

root.mainloop()
请注意,上述解决方案仅适用于小部件的
tkinter.PanedWindow
,而不适用于
ttk
版本。
ttk.PanedWindow
.add()
方法只接受一个选项:
weight
。但我们可以通过将侧窗格的权重设置为0,将中间窗格的权重设置为1来实现相同的结果:

import tkinter
from tkinter import ttk

root = tkinter.Tk()
root.geometry("480x200+200+200")
root.title("Paned Window Example")

main = ttk.PanedWindow(orient='horizontal')

main.pack(expand=True, fill="both")

pane1 = tkinter.Frame(width=90, bg="red")
pane2 = tkinter.Frame(width=310, bg="blue")
pane3 = tkinter.Frame(width=90, bg="red")

main.add(pane1, weight=0)
main.add(pane2, weight=1)
main.add(pane3, weight=0)

root.mainloop()

你应该提供。工作完美。