Tkinter 在tcl/tk中调整顶层窗口大小时调整对象大小

Tkinter 在tcl/tk中调整顶层窗口大小时调整对象大小,tkinter,tcl,tk,Tkinter,Tcl,Tk,我有一个TCL-TK复杂的GUI,在顶级TK窗口上有嵌套级别的画布和框架,其中包含文本/como框、列表、表格列表等 已使用“放置的几何图形管理器”对所有几何图形进行了排列。 是相对于顶层窗口调整对象大小的任何方法 目前,我已经在主画布上添加了一个滚动条,所有帧都放置在该画布上,在调整GUI大小时该滚动条将变为活动状态。但这也隐藏在调整帧内对象下的大小中 告诉一些出去的方法。这种问题就是为什么我建议你几乎永远不要使用place。与其他几何图形管理器相比,获得正确的调整大小行为要困难得多。在使用t

我有一个TCL-TK复杂的GUI,在顶级TK窗口上有嵌套级别的画布和框架,其中包含文本/como框、列表、表格列表等

已使用“放置的几何图形管理器”对所有几何图形进行了排列。 是相对于顶层窗口调整对象大小的任何方法

目前,我已经在主画布上添加了一个滚动条,所有帧都放置在该画布上,在调整GUI大小时该滚动条将变为活动状态。但这也隐藏在调整帧内对象下的大小中


告诉一些出去的方法。

这种问题就是为什么我建议你几乎永远不要使用
place
。与其他几何图形管理器相比,获得正确的调整大小行为要困难得多。在使用tk的几十年中,我使用
place
的次数可能不超过五六次

也就是说,
place
有一些选项,允许您指定宽度和相对于其主控形状的x/y坐标。例如,指定
relwidth=1.0
将使小部件与其主窗口的宽度完全相同。使用
relheight=.5
使小部件的高度为主窗口的一半


place
在tkinter世界中的文档记录有点不足(我提到这一点是因为您的问题包含了“tkinter”标签),但在tcl/tk中有很好的文档记录。有关选项列表以及如何组合选项的说明,请参见。

这类问题就是我建议您几乎永远不要使用
place
的原因。与其他几何图形管理器相比,获得正确的调整大小行为要困难得多。在使用tk的几十年中,我使用
place
的次数可能不超过五六次

也就是说,
place
有一些选项,允许您指定宽度和相对于其主控形状的x/y坐标。例如,指定
relwidth=1.0
将使小部件与其主窗口的宽度完全相同。使用
relheight=.5
使小部件的高度为主窗口的一半


place
在tkinter世界中的文档记录有点不足(我提到这一点是因为您的问题包含了“tkinter”标签),但在tcl/tk中有很好的文档记录。有关选项列表以及如何组合选项的说明,请参见。

与其他几何体管理器相比,
位置
几何体管理器更难使用;它的行为方式基本上更为原始(除非您可以使用
place
的相对放置和相对大小来直接执行所需操作),并且它根本不执行向外的几何体传播

但是,您可能正在寻找的技术是绑定到外部小部件的
事件(如果是顶级的,请小心;顶级绑定也会获取其中所有小部件的所有事件),每当小部件的高度或宽度发生更改时,这些事件都会发送给您。这是一个理想的时刻,可以重新计算您希望内部执行的操作,也可以安排在空闲事件中进行重新计算(在空闲后使用
),以便在必要时进行批量更新。Tk在内部做了很多类似的事情

试着从简单的方式开始。这里有一个简单的绑定,可以让您试验实际收到的通知

bind .outer <Configure> {
    puts "Window %w has changed width to %w and height to %h"
}
bind.outer{
将“窗口%w的宽度更改为%w,高度更改为%h”
}

与其他几何管理器相比,
位置
几何管理器更难使用;它的行为方式基本上更为原始(除非您可以使用
place
的相对放置和相对大小来直接执行所需操作),并且它根本不执行向外的几何体传播

但是,您可能正在寻找的技术是绑定到外部小部件的
事件(如果是顶级的,请小心;顶级绑定也会获取其中所有小部件的所有事件),每当小部件的高度或宽度发生更改时,这些事件都会发送给您。这是一个理想的时刻,可以重新计算您希望内部执行的操作,也可以安排在空闲事件中进行重新计算(在空闲后使用
),以便在必要时进行批量更新。Tk在内部做了很多类似的事情

试着从简单的方式开始。这里有一个简单的绑定,可以让您试验实际收到的通知

bind .outer <Configure> {
    puts "Window %w has changed width to %w and height to %h"
}
bind.outer{
将“窗口%w的宽度更改为%w,高度更改为%h”
}

使用其他几何图形管理器,如栅格。使用place,您必须自己调整所有对象的大小。您说您的GUI是“TCL-TK”,但您包含tkinter标记。为什么要使用tkinter标签?因为tkinter也是基于Tcl Tk的,所以更多的读者可以在文章中提出建议。使用其他几何管理器,如grid。使用place,您必须自己调整所有对象的大小。您说您的GUI是“TCL-TK”,但您包含tkinter标记。为什么要使用tkinter标签?因为tkinter也是基于Tcl Tk的,所以更多的读者可以在帖子中提出建议。