2014-01-08 2 views
1

텍스트가 바뀌기 때문에 자녀 중 한 명이 크기 요구 사항을 자주 변경하는 HPaned를 보유하고 있습니다. 결과는 텍스트가 변경 될 때마다 창이 이동한다는 것입니다. 자식의 크기가 줄어들지 않고 증가 만하도록 Paned.compute_position 메서드를 재정의하고 싶습니다. 그러나, 나는 그것을 무시하는 방법을 찾을 수 없습니다. Evenpygtk : gtk.Paned.compute_position을 오버라이드합니다.

class MyHPaned(gtk.HPaned): 
    def do_compute_position(self, allocation, child1_req, child2_req): 
     print "Hi" 
     return gtk.HPaned.compute_position(self, allocation, child1_req, child2_req) 
gobject.type_register(MyHPaned) 

이 작동하지 않습니다. 너는 제안이 있니? 감사!

답변

1

gtk_paned_compute_position은 GTK 자체에서 가상 함수가 아니기 때문에 gtk_paned_compute_position을 재정의 할 수 없습니다. 또한 gtk_paned_compute_position은 내부 용으로 표시되어 있으며 더 이상 사용되지 않으며 GTK + -2.24.x 소스에서 아무 곳에서나 호출되지 않습니다. 당신이 구분 기호의 위치를 ​​알아낼 수 있도록 덮어 쓰기를 통해 영향을 미치지 않도록 수출 된 것으로 의심됩니다. 대신 HPaned.compute_position을 무시하려고 시도의

, 당신은 size-allocate 신호로 접선 원하는 크기 set_size_request를 호출하여 원하는 크기 조정 정책을 구현 된 paned 단일 자식 컨테이너 (gtk.Bin의 예를 들면, 아이)에 배치해야합니다. 이것은 HPaned에 의해 자동으로 존중됩니다.

+0

답변 해 주셔서 감사합니다. 다른 옵션은 gtk.Alignment에 자식을 넣고 자식이 크기 할당 신호를 보낼 때 크기 요청을 변경하는 것입니다. 어쨌든, 고정 된 요청만으로도 괜찮다는 것을 알았 기 때문에 고정 폭 요청을 사용하여 자녀를 Alignment에 배치했습니다. – Noam