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