itzick binder
itzick binder

Reputation: 562

Adding 2 widgets into gtk with python

these are first few tries with python and I want to add 2 widgets to a gtk. I know and saw that you can only add one at a time and already know how to do that. can someone give me the loophole to be able to have also a "tree" and a right mouse click menu? This is my code:

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

Thanks a lot

Upvotes: 0

Views: 177

Answers (1)

Jussi Kukkonen
Jussi Kukkonen

Reputation: 14577

Please try to write clear questions: "I want to add 2 widgets to a gtk" is not meaningful.

I'm going to assume you want to add multiple widgets into a Window (or some other Bin), is that right? You can't do that since a Bin can only have one child (as the runtime error message will tell you): instead you should add a suitable container widget -- like a VBox -- into the Window, and then add your widgets into the container widget.

Upvotes: 1

Related Questions