2014-04-10 2 views
2

동적으로 페이지를 Gtk.Notebook에 추가하는 데 문제가 있습니다. Gtk.main()이 호출되기 전에 작성된 페이지는 잘 표시되지만 이후에 생성 된 페이지는 표시되지 않으며 GUI에서는 변경되지 않습니다.새로 추가 된 Gtk.Notebook 페이지가 표시되지 않습니다.

C:\dev>python notebook.py 
1 
2 
3 
4 
5 

내가 on_button_clicked() 내부 self.notebook.hide()self.notebook.show()을 수행하려하지만 도움이되지 않았다 :

#!/usr/bin/env python 

from gi.repository import Gtk 

class MyApp: 
    def __init__(self): 
     self.window = Gtk.Window() 

     self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) 
     self.window.add(self.box) 

     self.notebook = Gtk.Notebook() 
     self.box.pack_start(self.notebook, True, True, 0) 

     self.button = Gtk.Button(label='Add Page') 
     self.button.connect('clicked', self.on_button_clicked) 
     self.box.pack_start(self.button, False, False, 0) 

     for _ in range(2): 
      numpage = self.notebook.get_n_pages() + 1 
      label = Gtk.Label(label='label{}'.format(numpage)) 
      tab = Gtk.Label('tab{}'.format(numpage)) 

      self.notebook.append_page(label, tab) 
      print(self.notebook.get_n_pages()) 

    def on_button_clicked(self, widget): 
     numpage = self.notebook.get_n_pages() + 1 
     label = Gtk.Label(label='label{}'.format(numpage)) 
     tab = Gtk.Label('tab{}'.format(numpage)) 

     self.notebook.append_page(label, tab) 
     print(self.notebook.get_n_pages()) 


app = MyApp() 
app.window.connect('delete-event', Gtk.main_quit) 
app.window.show_all() 
Gtk.main() 

콘솔 출력은, 그러나, 그들은 참으로 생성되고 있음을 시사한다. 내가 놓친 게 있니?

감사합니다.

답변

1

위젯은 기본적으로 항상 보이지 않게 만들어집니다.

label.show() 
tab.show() 

또는 한 번에 모든 것을 보여줍니다 :

self.notebook.show_all() 

숨기기를하고 노트북을 보여주는 것은 내부 위젯의 가시 상태를 변경하지 않습니다 당신은 당신이 노트북에 추가하는 각각의 위젯을 보여 주어야 수첩.

+0

감사합니다. 해결되었습니다! – marcmar

관련 문제