2014-09-28 3 views
1

다음 코드를 사용하면 "Log Leeren"및 "Auto Scroll"버튼이 창 크기를 조정할 때 높이가 변경되는 문제가 있습니다.Python 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) 

창 클래스가 같은 함수에서 호출됩니다 :

그들은 내가 변경해야 할 무엇 scrolledWindow

사용해야 정확히 하나의 텍스트 라인 높은 뷰포트의 나머지해야한다 , 프레임 워크는 모든 고려해야 적어도 Qt는 측면에서

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

size 속성하는 minimumSize 속성과 maximumSize 속성을 위젯. 이 세 가지 속성을 높이와 너비에 동일한 값으로 설정하면 크기를 조정할 수 없게됩니다. Java의 위젯에는 명시적인 resizable 속성이 있습니다. GTK3이 크기 조정을 어떻게 방지하는지 모르겠지만, 어떤 웹 검색을 수행하면 this recipe이 나타났습니다.이 URL은 확장 가능하고 확장 된 것으로서 self.set_resizable(False)을 추가하여 작동하지 않는다고합니다. 시도해보고 알려줘!

+0

윈도우의 크기를 조정할 때 버튼의 크기를 조정하지 않고 스크롤 가능한 영역 (ScrolledWindow라는 GTK 3에서)이 가능한 많은 공간을 차지하도록 버튼의 크기를 조정하지 못하게하고 싶습니다. – Tobi

+0

버튼 크기를 고정시키고 싶다고 생각 했으므로 버튼으로 보낸 레서피와 동일한 기술을 적용하는 것이 좋습니다. 즉, GTK 버튼의 하위 클래스를 만들고 속성 'self./* 시도해보고 알려주세요! : D – SonicARG

2

Gtk.Table; 자식 위젯의 속성 인 expandalign을 항상 존중하지는 않습니다. GTK 3.0 이후의 교체는 Gtk.Grid입니다. 이를 사용하면 스크롤 된 창에서는 expand이 true로 설정되고 버튼은 false로 설정해야합니다.

+0

버튼의 수직 확장에 대한 나의 초기 문제를 해결하지만 지금은 완전한 그리드를 가지고 있습니다 (set_resizable (False)'. *) 2 개의 버튼 만 있습니다. – Tobi

관련 문제