python gtk.window.resize 调整窗口大小无效

0 投票
1 回答
3630 浏览
提问于 2025-04-16 21:12

我有一个窗口,最开始是设定了一个大小的,想让它在用户进行操作时变得更小或更大。我把它设置成了一个顶部停靠的窗口,这样就没有其他窗口可以把它最大化。

但是我无法把它调整到更小或更大的尺寸,什么都没有发生。

这是我创建这个窗口的代码:

window = gtk.Window(gtk.WINDOW_TOPLEVEL)

box = gtk.VBox(homogeneous=False, spacing=0)
window.add(box)
box.pack_start(browser, expand=True, fill=True, padding=0)
window.set_default_size(gtk.gdk.screen_width(),500)
window.move(0, 0)
window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)
window.show_all()
window.window.property_change("_NET_WM_STRUT", "CARDINAL", 32,
        gtk.gdk.PROP_MODE_REPLACE, [0, 0, 100, 0])

这是我在用户进行操作时触发的代码:

window.resize(gtk.gdk.screen_width(),100)

这个代码没有报错,但也没有任何反应……

有人知道我哪里出错了吗?

1 个回答

2

你的代码是可以工作的,只需要把这一行改一下:

window.resize(gtk.gdk.screen_width(),100) # Instead of gtk.gdk.screen.width()

而且用下面这行代码会更好,也就是:

window.window.property_change("_NET_WM_STRUT", "CARDINAL", 32,
    gtk.gdk.PROP_MODE_REPLACE, [0, 0, 100, 0])

window.show_all() 这个命令之后

否则会出现“NoneType”对象的错误。

这是你修改后的代码:

import gtk

class ResizeWindow:

 def __init__(self):
    self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    button = gtk.Button("Resize")
    self.window.add(button)
    button.connect("clicked", self.resizewin)
    self.window.set_default_size(gtk.gdk.screen_width(),500)
    self.window.move(0, 0)
    self.window.show_all()
    self.window.window.property_change("_NET_WM_STRUT", "CARDINAL", 32,
           gtk.gdk.PROP_MODE_REPLACE, [0, 0, 100, 0])

 def resizewin(self, widget, *args):
    self.window.resize(gtk.gdk.screen_width(),100)

if __name__ == '__main__':
  ResizeWindow()
  gtk.main()

希望这就是你想要做的事情。

撰写回答