我正在尝试构建一个虚拟化网格容器,以在 Fedora 35 上的 PyGTK 4 中显示 100k+ 个文件。我成功地创建了运行良好的布局和滚动支持。
为了支持调整我的应用程序窗口的大小,我需要对改变它的大小做出反应。我已经连接到notify
窗口的信号并处理、 和default-width
事件default-height
以更新布局的几何形状。但是,每次我在事件之后调用我的小部件/应用程序窗口时,我只能获得窗口最大化之前的宽度!这是设计使然吗?maximized
unmaximized
get_width()
maximized
我一直在努力,但我无法为这个简单的问题找到可行的解决方案。谁能帮我?
编辑
这是一些代码来概述我如何尝试测量窗口大小。我修改了要使用的代码,connect_after
而不是connect
@GüntherWagner 建议的代码。但是,这两种方法的行为是相同的:
class TestLayout(Gtk.ScrolledWindow):
def on_realize(self, widget):
...
self.get_root().connect_after('notify', self.on_notify)
def on_notify(self, widget, param):
if param.name in [..., 'maximized', 'unmaximized']:
self.draw()
def draw(self):
self.width = self.get_width()
self.height = self.get_height()