我正在尝试使用 gtk.window.get_size(),但它总是只返回默认的宽度和高度。文档说
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()
我想我明白现在发生了什么。这是在销毁信号内,因此当调用代码时,窗口已经消失了。是否有更规范的方法来处理窗口大小调整?我希望避免每次用户调整窗口大小时处理调整大小事件。
这似乎可以解决您的问题:
import gtk
def print_size(widget, data=None):
print window.get_size()
def delete_event(widget, data=None):
print window.get_size()
return False
def destroy(widget, data=None):
gtk.main_quit()
window = gtk.Window()
window.connect('delete_event', delete_event)
window.connect('destroy', destroy)
button = gtk.Button(label='Print size')
button.connect('clicked', print_size)
window.add(button)
window.show_all()
gtk.main()
我认为关键是打电话get_size
on the delete_event
信号而不是destroy
信号。如果您在destroy
信号,就像你所描述的那样,它只是返回默认大小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)