设定:
我有一个小的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())
虽然这很有效,但它很难看,所以我仍然会欣赏更好的选择。