2011-07-10 59 views
0

我有一個窗口,我開始在一定的大小,並希望做出更小或更大時,用戶進行交互..我已經成爲一個頂級碼頭,所以沒有什麼可以最大化。python gtk.window.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) 

它不會觸發任何錯誤代碼,但沒有任何反應..

任何人都知道我在做什麼錯了?

回答

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() 

希望,這是你想要做的一樣。

+0

是的,謝謝你指出我的錯誤,我調整了我的原始代碼,實際上gtk.gdk.screen.width只是我的一個錯字,我沒有直接粘貼,所以輸入錯誤。我的文章顯示我的代碼是如何,但它仍然無法正常工作。 –

+0

嗯,我只是試過你的代碼,這是必不可少的和我的一樣....那會工作....會在我的應用程序中挖一點,看看我做錯了什麼..感謝證明它的工作原理:p –

+0

我發現我的webkit窗口導致了這個問題(這裏沒有顯示),我不得不將它更改爲gtk.ScrolledWindow以使其全部工作。 –