【发布时间】:2011-10-31 23:24:05
【问题描述】:
我正在尝试使用 gtk.window.get_size(),但它总是只返回默认的宽度和高度。 The documentation says
get_size() 方法返回一个包含当前宽度和 窗口的高度。如果窗口不在屏幕上,则返回 大小 PyGTK 将向窗口管理器建议初始窗口 尺寸。 get_size() 方法得到的大小是最后一个大小 在配置事件中收到,即 PyGTK 使用其本地存储的 大小,而不是向 X 服务器查询大小。结果,如果 你调用 resize() 方法然后立即调用 get_size() 方法,大小还没有生效。窗口管理器之后 处理调整大小请求,PyGTK 收到通知 大小已通过配置事件更改,并且窗口的大小 得到更新。
我已经尝试手动调整窗口大小并等待一分钟左右,但我仍然得到默认的宽度和高度。
我正在尝试使用它来保存退出时的窗口大小,以便在启动时恢复它。有没有更好的方法来做到这一点?
这是我的主要退出的代码片段。
def on_main_window_destroy(self, widget, data=None):
if self.view.current_view.layout == 'list':
self.view.current_view.set_column_order()
width = self.main_window.get_size()[0]
height = self.main_window.get_size()[1]
#test statement
print (width, height)
self.prefs.set_size_prefs(width, height)
self.prefs.set_view_prefs(self.view.current_view.media, self.view.current_view.layout)
gtk.main_quit()
我想我明白现在发生了什么。这是在destroy信号内部,所以当代码被调用时,窗口已经消失了。是否有更规范的方式来处理窗口大小调整?我希望避免在每次用户调整窗口大小时处理调整大小事件。
【问题讨论】:
-
它应该适用于
gtk.window.get_size()。也许您应该发布代码 sn-ps 以保存和恢复窗口大小。我在我的项目中实现了这个功能,也许你应该看看to this -
@LoïcGRENON 我现在看到
get_size正在工作,只是不在我所说的地方。在您链接的代码中,您将quit函数用于销毁信号。当我这样做时,get_size永远不会返回新值。但是如果我在代码中的其他地方调用get_size,它确实有效。