使用python向gtk中添加2个小部件

使用python向gtk中添加2个小部件,python,menu,tree,widget,gtk,Python,Menu,Tree,Widget,Gtk,这是python的最初几次尝试,我想向gtk添加两个小部件。 我知道并看到您一次只能添加一个,并且已经知道如何做到这一点。 有人能给我一个漏洞,让我也能有一个“树”和鼠标右键点击菜单吗? 这是我的代码: import gtk class treeNode(): def __init__(self, father, name, link): self.father = father self.name = name self.link = link

这是python的最初几次尝试,我想向gtk添加两个小部件。 我知道并看到您一次只能添加一个,并且已经知道如何做到这一点。 有人能给我一个漏洞,让我也能有一个“树”和鼠标右键点击菜单吗? 这是我的代码:

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()

非常感谢

请尝试写清楚的问题:“我想向gtk添加两个小部件”没有意义

我假设您想在一个窗口(或其他容器)中添加多个小部件,对吗?您不能这样做,因为Bin只能有一个子项(运行时错误消息会告诉您):相反,您应该在窗口中添加一个合适的容器小部件(如VBox),然后将小部件添加到容器小部件中