我有一个窗口,我以一定的大小开始,并希望在用户进行交互时做得更小或更大。我已经把它变成了一个顶级的底座,所以没有什么可以最大化它。
我无法将其调整为更小或更大的尺寸,没有任何反应。
以下是我创建窗口的代码:
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)
它不会触发任何错误代码,但没有任何反应..
任何人都知道我做错了什么?
答案 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()
希望,这与你想做的一样。