Rückgabewert ermitteln

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
htw7448
User
Beiträge: 51
Registriert: Montag 16. April 2007, 10:59
Wohnort: Messel(Hessen)
Kontaktdaten:

Rückgabewert ermitteln

Beitragvon htw7448 » Donnerstag 28. Juni 2007, 10:37

Vorweg - ich bin Anfänger!

Momentan versuche ich ein kleines Tool mit 2 Comboboxen zu schreiben.

Problem: Wie übergebe ich das Ergebnis der 1. Box (c1string) an den c2string , damit dort damit weitergearbeitet werden kann. Die Attribute sind fürs erste absichlich öffentlich gehalten um das ganze für mich zu vereinfachen.

Wenn ich print self.changed_cb in der Methode c2string Abfrage kommt etwas in der Art <bound method Interface.changed_cb of <__main__.Interface instance at 0x82d95cc>>.

Ich bin mir ziemlich sicher das ich das Prinzip der Übergabe der Werte zwischen einzelnen Methoden noch nicht richtig verstanden habe.


Code: Alles auswählen

import gtk
import pygtk
pygtk.require('2.0')
import os
import os.path
import re
import csv
from itertools import count, izip

class Interface:

    def destroy(self,widget, data=None):
        gtk.main_quit()

    def delete_event(self, widget, event, data=None):
        print "delete event occured"
        return False

    def changed_cb(self, combobox):
        model = combobox.get_model()
        index = combobox.get_active()
        if index:
            print ' Element :', model[index][0], 'gewählt'
       sel_pos = model[index][0]
       return sel_pos
   
    def c2string(self, liste=None):
   DEFAULT_PATH = '/home/dwarfy/python/Testordner/'
       print self.changed_cb
   #DEFAULT_FILE =  """hier muss das Ergebnis aus der Abfrage c1string rein"""
   liste = os.listdir('%s%s' %(DEFAULT_PATH, DEFAULT_FILE))
   print liste
   liste.sort()
   return liste
   

    def c1string(self, liste=None):   
   DEFAULT_PATH = '/home/dwarfy/python/'
       DEFAULT_FILE = 'numbers.txt'
   
   liste = []
   csv_file = open(os.path.join(DEFAULT_PATH, DEFAULT_FILE), 'rb')
   for checkrow, row in izip (count(1), csv.reader(csv_file, delimiter = '\t')):
      if checkrow >= 10:
         liste.append(row[0])
   csv_file.close()
   liste.sort()
   return liste
   

    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.connect("destroy", self.destroy)
        self.window.connect("delete_event", self.delete_event)
        self.window.set_border_width(10)
        self.window.set_title('Testprogramm')
#      self.window.set_size_request(400, 600)

        self.vbox_1 = gtk.VBox(False, 0)
        self.window.add(self.vbox_1)
        self.hbox_1 = gtk.HBox(False, 0)
   self.hbox_2 = gtk.HBox(False, 0)
        self.vbox_1.pack_start(self.hbox_1, True, True, 0)
   self.vbox_1.pack_start(self.hbox_2, True, True, 0)
       
        c1string = self.c1string()
   c2string = self.c2string()
        liststore = gtk.ListStore(str)
   liststore2 = gtk.ListStore(str)
   liststore2.append(['Wählen Sie eine Nummer'])
        liststore.append(['Wählen sie eine Aktion'])
        for n in c1string:
            liststore.append(['%s'%n])
       print liststore
   for n in c2string:
       liststore2.append(['%s'%n])
       print liststore2
        self.combo_1 = gtk.combo_box_new_text()
        self.combo_1.set_model(liststore)
        self.combo_1.connect('changed', self.changed_cb)
        self.combo_1.set_active(0)
   
   self.combo_2 = gtk.combo_box_new_text()
   self.combo_2.set_model(liststore2)
   self.combo_2.connect('changed', self.changed_cb)
   self.combo_2.set_active(0)
       

        self.hbox_1.pack_start(self.combo_1, True, True, 0)
   self.hbox_2.pack_start(self.combo_2, True, True, 0)

        self.combo_1.show()
   self.combo_2.show()
        self.hbox_1.show()
   self.hbox_2.show()
        self.vbox_1.show()
        self.window.show()

    def main(self):
        gtk.main()

if __name__ == "__main__":
    interface = Interface()
    interface.main()
       


Leider verhaut es die Formatierung ein wenig. Ich hab keine Ahnung woran das liegt.

Zur Funktion: Das Tool liest Verzeichnisinformationen aus einer Datei und stellt die verfügbaren Verzeichnisse in der Combobox 1 zur Verfügung. Die Combobox 2 soll jetzt die Unterverzeichnisse des in Combobox 1 gewählten Verzeichnisses anbieten
MfG

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder