Dialog Box mit Glade 3.4

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
kurvenschubser
User
Beiträge: 15
Registriert: Montag 10. März 2008, 01:49
Wohnort: Berlin

Montag 7. April 2008, 18:31

Guten Tag,
vorweg, ich bin noch ein ziemlicher Anfänger, sowohl mit Python als auch GTK und Glade. Mein Problem ist folgendes:
Ich habe eine Dialog Box und ein Hauptprgramm-GUI mit Glade 3.4 designt. Die Dialog Box hat ein Label und die zwei Stock Buttons "Ja" und "Nein" in der Dialog-action_area. Der Dialog ist als Klasse definiert, die von dem Hauptprogramm per Knopfdruck aufgerufen wird. Beim Klick auf "Ja" soll erstmal einfach nur ein "print 'Ja'" ausgeführt werden und der Dialog geschlossen, auf "Nein" soll der Dialog geschlossen werden. Es wird beim Klicken auf die Knöpfe zwar die Box geschlossen, was schon mal gut ist, aber sonst passiert offenbar nix weiter.

Das Ganze sieht so aus, ist alles noch recht unreif, alle Methoden außer der aufrufenden können glaub ich ignoriert werden:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygtk
pygtk.require("2.0")
import gtk
import gtk.glade




class Klauswert:

	def __init__(self):

		self.glade_datei_haupt = "./glade/klauswert-gui_0.1.4.glade"
		self.wTree = gtk.glade.XML(self.glade_datei_haupt, "window1")

		self.etikett_zaehler = self.wTree.get_widget("noten_eingabe_feld_etikett_zaehler1")
		self.etikett_zaehler.set_text(str(self.zaehler))

		self.etikett_zaehler11 = self.wTree.get_widget("noten_eingabe_feld_etikett_zaehler11")
		self.etikett_zaehler11.set_text(str(self.zaehler11))

		dic = {"on_window1_destroy": self.destroy,
				"on_knopf_export1_clicked" : self.knopf_export1_clicked,
				"on_knopf_visual1_clicked": self.knopf_visual1_clicked,
				"on_knopf_on_knopf_laden1_clicked" : self.knopf_laden1_clicked,
				"on_knopf_speichern1_clicked": self.knopf_speichern1_clicked,
				"on_knopf_speichernunter1_clicked": self.knopf_speichernunter1_clicked,
				"on_knopf_beenden1_clicked": self.knopf_beenden1_clicked,
				"on_knopf_zurueck1_clicked": self.knopf_zurueck1_clicked,
				"on_knopf_vor1_clicked": self.knopf_vor1_clicked,
				"on_knopf_loeschen1_clicked": self.knopf_loeschen1_clicked,
				"on_haken_tooltips1_toggled": self.haken_tooltips1_toggled,
				"on_haken_speichern1_toggled": self.haken_speichern1_toggled,
				"on_knopf_notenschemen1_clicked": self.knopf_notenschemen1_clicked,
				"on_sort_eintraege1_changed": self.sort_eintraege1_changed,
				"on_knopf_note_plus1_clicked" : self.knopf_note_plus1_clicked,
				"on_knopf_note_minus1_clicked" : self.knopf_note_minus1_clicked,
				"on_knopf_note_plus11_clicked" : self.knopf_note_plus11_clicked,
				"on_knopf_note_minus11_clicked" : self.knopf_note_minus11_clicked}

		self.wTree.signal_autoconnect(dic)

		self.liststore = gtk.ListStore(int, str, float)
		self.treeview = self.wTree.get_widget("treeview1")
		self.treeview.set_model(self.liststore)

		renderer = gtk.CellRendererText()
		spalte1 = gtk.TreeViewColumn("#", renderer, text=0)
		spalte2 = gtk.TreeViewColumn("ID", renderer, text=1)
		spalte3 = gtk.TreeViewColumn("Note", renderer, text=2)
		
		self.treeview.append_column(spalte1)

		self.treeview.append_column(spalte2)

		self.treeview.append_column(spalte3)

	zaehler = 0
	zaehler11 = 0
	
	def teilnehmer_anzahl(self):
		return self.zaehler + self.zaehler11

	def destroy(self, widget):
		gtk.main_quit()

	def knopf_export1_clicked(self, widget):
		pass

	def knopf_visual1_clicked(self, widget):
		pass

	def knopf_laden1_clicked(self, widget):
		pass

	def knopf_speichern1_clicked(self, widget):
		pass

	def knopf_speichernunter1_clicked(self, widget):
		pass
	
	def knopf_beenden1_clicked(self, widget):
		gtk.main_quit()

	def knopf_zurueck1_clicked(self, widget):
		pass

	def knopf_vor1_clicked(self, widget):
		pass
# Aufrufende Methode
	def knopf_loeschen1_clicked(self, widget):

			liste_loeschen_dialog = ListeLoeschenDialog()
			antwort = liste_loeschen_dialog.run()
			if (antwort == gtk.RESPONSE_YES):
				print 'Ja'

	def haken_tooltips1_toggled(self, widget):
		pass

	def haken_speichern1_toggled(self, widget):
		pass

	def knopf_notenschemen1_clicked(self, widget):
		pass

	def sort_eintraege1_changed(self, widget):
		pass

	def knopf_note_plus1_clicked(self, widget):
		self.zaehler += 1
		self.etikett_zaehler.set_text(str(self.zaehler))
		iter = self.liststore.append([self.teilnehmer_anzahl(), 'später', 1.0])
		treeiter = self.liststore.get_iter(self.zaehler - 1)
		value = self.liststore.get_value(iter, 0)
		value2 = self.liststore.get(iter, 0, 1, 2)				#spalten: teilnehmer-index, teilnehmer-id, teilnehmer-note
		value3 = self.liststore.get_value(treeiter, 0)
		value4 = self.liststore.get(treeiter, 0, 1, 2)

	def knopf_note_minus1_clicked(self, widget):
		self.zaehler -= 1
		if self.zaehler < 0:
			self.zaehler = 0
		print self.zaehler
		self.etikett_zaehler.set_text(str(self.zaehler))
		treeiter = self.liststore.remove(iter)
		return self.zaehler

	def knopf_note_plus11_clicked(self, widget):
		self.zaehler11 += 1
		self.etikett_zaehler11.set_text(str(self.zaehler11))
		iter = self.liststore.append([self.teilnehmer_anzahl(), 'später', 1.0])
		return self.zaehler11

	def knopf_note_minus11_clicked(self, widget):
		self.zaehler11 -= 1
		if self.zaehler11 < 0:
		    self.zaehler11 = 0
		self.etikett_zaehler11.set_text(str(self.zaehler11))
		return self.zaehler11

class ListeLoeschenDialog:

	def __init__(self):

		self.glade_datei_haupt = "./glade/klauswert-gui_0.1.4.glade"

	def run(self):
		"""Diese Funkt. soll den Dialog zeigen"""
		self.wTree = gtk.glade.XML(self.glade_datei_haupt, "dialog1")
		self.dlg = self.wTree.get_widget("dialog1")
		self.antwort = self.dlg.run()
		self.dlg.destroy()
		return self.antwort

if __name__ == "__main__":
	print __name__
	instanz = Klauswert()         
	gtk.main()
Hier sind alle Dateien inkl. Glade-Datei:

http://webfilehosting.com/LUXUMJ1MCK7G/klauswert.tar.gz

Was läuft da falsch? Ich vermute es hat mit dieser run() Funktion in "ListeLoeschenDialog" zu tun?

Malte
kurvenschubser
User
Beiträge: 15
Registriert: Montag 10. März 2008, 01:49
Wohnort: Berlin

Mittwoch 9. April 2008, 12:03

Also ich hab das jetzt mal so gemacht:

Code: Alles auswählen

class Klauswert:
#
#<schnipp> ne menge anderer krams</schnipp>
#
	def knopf_loeschen1_clicked(self, widget):

		eingaben_loeschen_dialog = ListeLoeschenDialog()

class ListeLoeschenDialog:
	
	def __init__(self):

		self.dlg = gtk.Dialog(title="Dialog", parent=None, flags=0, buttons=None)
		self.dlg.show()

		#Knopf Ja
		knopf_ja = gtk.Button(label=None, stock=gtk.STOCK_YES)

		# Verbinde eingaben_loeschen
		knopf_ja.connect("clicked", self.eingaben_loeschen)

		self.dlg.action_area.pack_start(knopf_ja, True, True, 0)
		knopf_ja.show()

		#Knopf Nein
		knopf_nein = gtk.Button(label=None, stock=gtk.STOCK_NO)

		#	Verbinde schliessen
		knopf_nein.connect("clicked", self.schliessen)

		self.dlg.action_area.pack_start(knopf_nein, True, True, 0)
		knopf_nein.show()

		#Label setzen
		label = gtk.Label()
		#	benutze markup
		label.set_markup("<i><b>Alle</b> Eingaben löschen?</i>")
		self.dlg.vbox.pack_start(label, True, True, 0)
		label.show()

	def eingaben_loeschen(self, knopf_ja):
		
		print 'Liste löschen'
		#	True setzt die Noten-Zaehler auf Null
		instanz.knopf_note_minus1_clicked(True)
		instanz.knopf_note_minus11_clicked(True)
		#lösche alle elemente der iter_liste
		del instanz.noten_iter_liste[:]
		instanz.liststore.clear()
		self.dlg.destroy()

	def schliessen(self, knopf_nein):
		self.dlg.destroy()
MfG, Malte
Antworten