尝试制作更大/更小的窗口时,python gtk.window.resize无法正常工作

时间:2011-07-10 16:20:47

标签: python linux gtk resize

我有一个窗口,我以一定的大小开始,并希望在用户进行交互时做得更小或更大。我已经把它变成了一个顶级的底座,所以没有什么可以最大化它。

我无法将其调整为更小或更大的尺寸,没有任何反应。

以下是我创建窗口的代码:

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 个答案:

答案 0 :(得分: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()

希望,这与你想做的一样。