2014-09-28 53 views
1

使用下面的代碼,我有問題,該按鈕「日誌Leeren」和「自動滾動」改變自己的身高,當我調整窗口的大小。他們應該只有一個文本行高和視口的其餘部分應當由scrolledWindowPython的GTK 3表:按鈕不應該擴大

什麼我需要改變使用:

class ConsoleLogWindow(Gtk.Window): 
    def __init__(self, server): 
     self.log = server["log"]; 
     Gtk.Window.__init__(self, title="Meteor Log von %s" % server["name"]) 

     # self.set_icon_from_file("filename") 

     self.set_size_request(800,500) 

     table = Gtk.Table(3, 2, False) 

     self.add(table) 

     # Should be only one line of thext high 
     self.button_clear = Gtk.Button(label="Log Leeren") 
     self.button_scroll = Gtk.Button(label="Auto Scroll") 

     table.attach(self.button_clear, 2, 3, 1, 2) 
     table.attach(self.button_scroll, 0, 1, 1, 2) 

     # should take as much space as is available. 
     scrollWindow = Gtk.ScrolledWindow() 
     scrollWindow.set_hexpand(False) 
     scrollWindow.set_vexpand(True) 

     self.content_table = Gtk.Table(len(self.log)+1, 4, False) 
     # self.content_table is filled here. 

     scrollWindow.add(self.content_table) 

     table.attach(scrollWindow, 0, 3, 0, 1) 

窗口類被稱爲像一個函數:

def show_errors_menu(self, widget): 
    print ("Showing Error Menu") 
    win = ConsoleLogWindow(widget.get_node()); 
    win.connect("delete-event", Gtk.main_quit) 
    win.show_all() 
    Gtk.main() 

回答

0

在Qt的一面,至少,該框架考慮每個小部件size屬性,minimumSize屬性和maximumSize屬性。將這三個屬性設置爲高度和寬度相同的值使得它們不可重現。 Java的小部件具有明確的resizable屬性。我不知道GTK3如何防止調整大小,但做一些網絡搜索,我遇到了this recipe,它通過擴展和添加self.set_resizable(False)這使得不可調整的窗口,據說這是工作。試試看,讓我知道!

+0

我不想禁用窗口大小調整,我想禁用按鈕的大小調整時,我調整窗口的大小,我的滾動區域(在GTK 3名爲ScrolledWindow)需要儘可能多的空間可用。 – Tobi 2014-09-29 01:05:11

+0

我明白你想凍結按鈕的大小,所以我的建議是,適用於我發給你一個按鈕的配方做了同樣的技術(即,創建GTK的按鈕的子類,添加屬性'自我。 。set_resizable(假)'*(很抱歉,如果我沒有解釋自己清楚):/ *試試吧,讓我知道!d – SonicARG 2014-09-29 01:11:20

2

請勿使用Gtk.Table;它並不總是尊重其子部件的expandalign屬性。自GTK 3.0以來,它的替代版本爲Gtk.Grid。使用它,您只需確保expand在滾動窗口中設置爲true,在按鈕上設置爲false。

+0

這解決了我最初的問題,按鈕的垂直擴展,但現在我有完整的網格只有2個按鈕寬。 – Tobi 2014-09-30 12:42:43