Dialog Box mit Glade 3.4

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

Dialog Box mit Glade 3.4

Beitragvon kurvenschubser » 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

Beitragvon kurvenschubser » 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

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]