2013-12-09 1 views
0

이들은 파이썬으로 처음 몇 번 시도한 것이므로 gtk에 2 개의 위젯을 추가하고 싶습니다. 나는 한 번에 하나씩 만 추가 할 수 있고 이미 그렇게하는 방법을 알고 있음을 알고 있습니다. 누군가 "나무"와 마우스 오른쪽 버튼 클릭 메뉴를 가질 수있는 허점을 줄 수 있습니까? 이 내 코드입니다 :파이썬으로 gtk에 2 개의 위젯을 추가하기

import gtk 

class treeNode(): 
    def __init__(self, father, name, link): 
     self.father = father 
     self.name = name 
     self.link = link 


class PyApp(gtk.Window): 
    def __init__(self): 
     super(PyApp, self).__init__() 

     self.set_size_request(700, 500) 
     self.set_position(gtk.WIN_POS_CENTER) 

     self.connect("destroy", gtk.main_quit) 
     self.set_title("Assignment1") 

     eventbox = gtk.EventBox() 

     tree = gtk.TreeView() 

     trying = gtk.TreeViewColumn() 
     trying.set_title("Get Busy") 

     cell = gtk.CellRendererText() 
     trying.pack_start(cell, True) 
     trying.add_attribute(cell, "text", 0) 

     treestore = gtk.TreeStore(str) 

     father = None 
     name = ["default"] 

     node = treestore.append(father, name) 

     node = treeNode(father, name, node) 
     lst = [node] 

     father = lst[0].link 
     name = ["cluster1"] 

     node = treestore.append(father, name) 

     node = treeNode(father, name, node) 
     lst.append(node) 

     father = lst[1].link 
     name = ["clusterA"] 

     node = treestore.append(father, name) 

     node = treeNode(father, name, node) 
     lst.append(node) 

     father = lst[0].link 
     name = ["cluster2"] 

     node = treestore.append(father, name) 

     node = treeNode(father, name, node) 
     lst.append(node) 

     father = lst[3].link 
     name = ["clusterA"] 

     node = treestore.append(father, name) 

     node = treeNode(father, name, node) 
     lst.append(node) 

     tree.append_column(trying) 
     tree.set_model(treestore) 

     self.add(tree) 
     self.show_all() 

     self.menu = gtk.Menu() 
     addMenu = gtk.MenuItem("Add") 
     renManu = gtk.MenuItem("Rename") 
     remMenu = gtk.MenuItem("Remove") 
     self.menu.append(addMenu) 
     self.menu.append(renManu) 
     self.menu.append(remMenu) 

     eventbox.connect("button-release-event", self.menu_display) 

     self.add(eventbox) 

     self.show_all() 



    def menu_display(self, widget, event): 
     if event.button == 3: 
      self.menu.popup(None, None, None, event.button, event.time, None) 
      self.menu.show_all() 


PyApp() 
gtk.main() 

감사

답변

1

분명 질문을 작성하려고하십시오 많은 : "나는 GTK 2 개 위젯을 추가 할"의미가 없습니다.

Window (또는 다른 Bin)에 여러 위젯을 추가한다고 가정하겠습니다. 맞습니까? Bin은 하나의 자식 만 가질 수 있기 때문에 런타임에 오류 메시지가 표시됩니다. 대신 VBox와 같은 적절한 컨테이너 위젯을 창에 추가 한 다음 위젯을 컨테이너 위젯.

관련 문제