[kwlug-disc] Question Involving GTK 3 Programming in Python

Paul Nijjar paul_nijjar at yahoo.ca
Thu Apr 29 15:41:16 EDT 2021


You have a class ScrapAppWindow. My (possibly wrong) idea would be to
make material_combo a class variable, rather than a variable that is
local to the init() function. Then it will be accessible from your
other functions.

- Paul


On Wed, Apr 28, 2021 at 09:57:33PM -0400, John Driezen wrote:
> I have run into a snag writing my scrap app program.� Sample code follows.
> 
> import gi
> 
> gi.require_version("Gtk", "3.0")
> from gi.repository import Gtk
> 
> class ScrapAppWindow(Gtk.Window):
> ��� def on_material_combo_changed(self, combo):
> ������� tree_iter = combo.get_active_iter()
> ������� if tree_iter is not None:
> ����������� model = combo.get_model()
> ����������� selected_material = model[tree_iter][0]
> ����������� print("Selected: material=%s" % selected_material)
> 
> ��� def on_plot_graph_clicked(self, button):
> ������� print('"Plot Graph" Button was clicked.')
> 
> ������� # TODO: Get selected_material from material_combobox
> ������� # and call plotgraph(selected_material)
> 
> ������� #if selected_material is not None:
> ������� #��� plotgraph(selected_material)
> ������� #else:
> 
> ������� dialog = Gtk.MessageDialog(
> ����������� transient_for=self,
> ����������� flags=0,
> ����������� message_type=Gtk.MessageType.INFO,
> ����������� buttons=Gtk.ButtonsType.OK,
> ����������� text="Please select a material.",
> ������� )
> ������� dialog.run()
> ������� print("Plot Graph dialog closed.")
> ������� dialog.destroy()
> 
> ��� def __init__(self):
> ������� Gtk.Window.__init__(self, title="Scrap App")
> ������� self.set_border_width(10)
> 
> ������� material_label = Gtk.Label(label="Please Select Material")
> 
> ������� material_store = Gtk.ListStore(str)
> 
> ������� material_store.append(["#1 Bright Copper"])
> ������� material_store.append(["#1 Copper"])
> ������� material_store.append(["#2 Copper"])
> ������� material_store.append(["#3 Copper"])
> ������� material_store.append(["Aluminum Extrusion"])
> ������� material_store.append(["Tin"])
> ������� material_store.append(["Steel"])
> ������� material_store.append(["Aluminum Cast"])
> ������� material_store.append(["Yellow Brass"])
> ������� material_store.append(["Die Cast Zinc"])
> 
> ������� material_combo = Gtk.ComboBox.new_with_model(material_store)
> ������� material_combo.connect("changed", self.on_material_combo_changed)
> ������� renderer_text = Gtk.CellRendererText()
> ������� material_combo.pack_start(renderer_text, True)
> ������� material_combo.add_attribute(renderer_text, "text", 0)
> 
> ������� plot_button = Gtk.Button.new_with_label("Plot Graph")
> ������� plot_button.connect("clicked", self.on_plot_graph_clicked)
> 
> ������� vbox = Gtk.Box(orientation = Gtk.Orientation.VERTICAL, spacing=10)
> ������� vbox.pack_start(material_label, True, True, 0)
> ������� vbox.pack_start(material_combo, True, True, 0)
> ������� vbox.pack_start(plot_button, True, True, 0)
> 
> ������� self.add(vbox)
> ������� self.show_all()
> 
> win = ScrapAppWindow()
> win.connect("destroy", Gtk.main_quit)
> win.show_all()
> Gtk.main()
> 
> My question is how do I retrieve the material combobox value from within the
> on_plot_graph_clicked method?� For brevity, the plotgraph routine is not
> included.
> 
> John Driezen
> 
> jdriezen at sympatico.ca
> 
> 
> _______________________________________________
> kwlug-disc mailing list
> kwlug-disc at kwlug.org
> https://kwlug.org/mailman/listinfo/kwlug-disc_kwlug.org

-- 
Events: https://feeds.off-topic.kwlug.org 
Blog: http://pnijjar.freeshell.org




More information about the kwlug-disc mailing list