我有一个TCL-TK复杂的GUI,在顶层tk窗口上有嵌套的画布和框架,文本/ como-box,list,tablelist等。
所有已使用放置的几何管理器进行排列。 他们是否可以相对于顶层窗口调整对象的大小。
目前,我在主画布上添加了一个滚动条,其中放置了所有框架,在调整GUI大小时它将变为活动状态。但是,这也隐藏在框架内的对象下调整大小。
告诉某种方法离开。
答案 0 :(得分:2)
place
几何管理器比其他几何管理器更难以使用;它主要表现得更加原始(除非你可以使用place
的相对位置和相对大小来直接做你想做的事情)并且它不做外向几何传播。
但是,您可能正在寻找的技术是绑定到外部窗口小部件的<Configure>
事件(如果这是一个很好的事情,请小心;顶层绑定会获得所有事件的所有事件它们里面的小部件也会在小部件的高度或宽度发生变化时发送给你。这是一个理想的时刻,可以重新计算您希望内部执行的操作,或者在空闲事件(使用after idle
)中安排重新计算,以便您可以在必要时进行更新。 Tk在内部做了很多这样的事情。
尝试以简单的方式开始。这是一个简单的绑定,可让您体验实际获得的通知。
bind .outer <Configure> {
puts "Window %w has changed width to %w and height to %h"
}
答案 1 :(得分:1)
这种问题是我建议您几乎不要使用place
的原因。获得适当的调整大小行为比其他几何管理器要困难得多。在使用tk的几十年中,我可能使用place
不超过五六次。
话虽这么说,place
有一些选项可以让你指定相对于主人的宽度和x / y坐标。例如,指定relwidth=1.0
将使窗口小部件与其主窗口的宽度完全相同。使用relheight=.5
使小部件的高度与主窗口一样高。
place
在tkinter世界中有些记录不足(我提到因为你的问题包括“tkinter”标签),但是对于tcl / tk有详细记录。请参阅http://tcl.tk/man/tcl8.5/TkCmd/place.htm以获取选项列表以及如何合并这些选项的说明。