设置:
- 操作系统:Ubuntu Precise (12.04) amd64
- 蟒蛇:2.7.3
- GTK:2.24.0
- WindowManager:metacity 和 FVWM2 都表现出相同的行为
我有一个小型 pygtk 应用程序,其中包含(在其他小部件中)一个树视图。窗口具有 resizable=False ,因此当树视图展开/折叠时,窗口会自动调整大小以适应内容。这一切都很好。
问题是当窗口调整大小时,它会保持在原来的位置。当窗口调整大小时,我希望窗口的左上角保持在同一个位置。
我发现使用 +x+y 位置调用 parse_geometry() 会引发所需的行为。但这并不总是一种选择。在典型情况下,我希望窗口在鼠标所在的位置打开,而不是在固定位置。
我怀疑我需要设置 gtk.gdk.HINT_USER_POS,但据我所知,pygtk 的 set_geometry_hints() 版本不允许我像 C 和 Perl 接口那样传递 GdkWindowHints。
当内容导致窗口大小改变时,如何使窗口的左上角保持静止?
更新:
由于 parse_geometry() 为我设置了位,就在 gtk.main() 之前,我调用
gobject.timeout_add(500, self.fix_window)
回调是:
def fix_window(self):
self.window.parse_geometry("+%d+%d" % self.window.get_position())
虽然这可行,但它很丑,所以我仍然希望有一个更好的选择。