pythoncard choice abfragen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
dodo
User
Beiträge: 73
Registriert: Mittwoch 10. November 2010, 13:43

Ich möchte ein Programm mit PythonCard machen,dass am 24. 12. 2011 startklar sein sollte.
Ich hab da ne choice(heißt "spielauswahl"), find aber nicht raus, wie ich die abfragen kann.
Denn da gibt es einen Button namens "auswPLUS" der das abfragen soll. Hier der derzeitige code dazu:

Code: Alles auswählen

from PythonCard import model
import os
class main_(model.Background):
 ...
 def on_auswPLUS.mouseClick(self,event):
   self.me_drin = self.components.spielauswahl.#Hier fehlt mir der Code
   a = open(self.me_drin+".txt",'r')
   b = a.read()
   self.components.inhalt.text = b
   a.close()
   self.components.startPLUS.label = "Starten: "+self.me_drin

app = model.Application(main_)
app.MainLoop()
Für Neugierige:
1.self.me_drin ist eine Variable, die später benötigt wird
2.die txt-Datei ist eine Datei in der Infos für das HTML-Window inhalt benötigt werden.
3.startPLUS startet dann das ausgewählte Programm(Die Choice zeigt mögliche Programme an)
4.Das ist ein Weihnachtsgeschenk(hätte man sich auch denken können :D ). Für wen verrate ich nicht.

Ich danke schon im Voraus,

DODO
Geht nicht gibts nicht(Das gilt auch für Python)!
Benutzeravatar
dodo
User
Beiträge: 73
Registriert: Mittwoch 10. November 2010, 13:43

Langsam wirds dringend!
Denn ich würde das Programm sehr gerne am 24.12. abgeben.
Und nicht verspätet!
Und wenn schon verspätet, dann wenigsten kurz nach Weihnachten! :!:
Geht nicht gibts nicht(Das gilt auch für Python)!
BlackJack

@dodo: Du hast Dir mit PythonCard etwas recht exotisches ausgesucht. Kenner der Materie scheinen rar zu sein.
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

dodo hat geschrieben:Langsam wirds dringend!
Denn ich würde das Programm sehr gerne am 24.12. abgeben.
Und nicht verspätet!
Und wenn schon verspätet, dann wenigsten kurz nach Weihnachten! :!:
D. h. am 27. Dezember?

Ist es das, wonach du suchst? http://pythoncard.sourceforge.net/dialo ... ialog.html
Benutzeravatar
dodo
User
Beiträge: 73
Registriert: Mittwoch 10. November 2010, 13:43

Den kompletten Code braucht ihr eigentlich nicht.
Ich gebe ihn euch trozdem:
start_mich.pyw:

Code: Alles auswählen

from PythonCard import model
import os

class main_(model.Background):
    def on_initialize(self,event):
        self.me_drin = "Crazy_eights"
        a = open("importi.pyw", 'w')
        a.write("import crazy_eights")
        a.close()
        a = open("crazy_eights.txt")
        b = a.read()
        self.components.inhalt.text = b
        a.close()
        self.components.startPLUS.label = "Starten: " + self.me_drin
        a = open("games.txt")
        b = a.read()
        b = b.split(',')
        self.components.inhalt.items = b
        a.close()
    def on_startPLUS_mouseClick(self,event):
        os.system("start "+self.me_drin+".pyw")
    def on_spiel1_mouseClick(self,event):
        self.me_drin = "Crazy_eights"
        a = open("crazy_eights.txt",'r')
        b = a.read()
        self.components.inhalt.text = b
        a.close()
        self.components.startPLUS.label = "Starten: " + self.me_drin
    def on_spiel2_mouseClick(self,event):
        self.me_drin = "Zahlenraten"
        a = open("zahlenraten.txt",'r')
        b = a.read()
        self.components.inhalt.text = b
        a.close()
        self.components.startPLUS.label = "Starten: " + self.me_drin
    def on_spiel3_mouseClick(self,event):
        self.me_drin = "Hangmann"
        a = open("hangmann.txt",'r')
        b = a.read()
        self.components.inhalt.text = b
        a.close()
        self.components.startPLUS.label = "Starten: " + self.me_drin
    def on_auswPLUS_mouseClick(self,event):
        self.me_drin = self.components.spielauswahl.userdata
        a = open(self.me_drin+".txt",'r')
        b = a.read()
        self.components.inhalt.text = b
        a.close()
        self.components.startPLUS.label = "Starten: " + self.me_drin
    def on_new_mouseClick(self, event):
        self.me_drin = "Neu"
        self.components.inhalt.text = "<b>SPIEL HINZUFUEGEN</b><br><br>Fuege ein Spiel hinzu."
        self.components.startPLUS.label = "Neues Spiel hinzufuegen"

app = model.Application(main_)
app.MainLoop()
start_mich.rsrc.py

Code: Alles auswählen

{'application':{'type':'Application',
          'name':'Template',
    'backgrounds': [
    {'type':'Background',
          'name':'bgTemplate',
          'title':u'Dodos Spieleuniversum(DODOGAMES + Hello World)',
          'size':(566, 276),
          'icon':'ico.ico',
          'style':['resizeable'],

        'menubar': {'type':'MenuBar',
         'menus': [
             {'type':'Menu',
             'name':'menuFile',
             'label':'&File',
             'items': [
                  {'type':'MenuItem',
                   'name':'menuFileExit',
                   'label':'E&xit',
                   'command':'exit',
                  },
              ]
             },
         ]
     },
         'components': [

{'type':'HtmlWindow',
    'name':'inhalt',
    'position':(360, 24),
    'size':(194, 192),
    'backgroundColor':(255, 255, 255, 255),
    },

{'type':'Button',
    'name':'startPLUS',
    'position':(35, 180),
    'size':(295, -1),
    'backgroundColor':(125, 254, 48, 255),
    'foregroundColor':(64, 117, 255, 255),
    'label':u'Starten: Crazy eights',
    },

{'type':'StaticBox',
    'name':'box100',
    'position':(10, 160),
    'size':(339, 56),
    'label':u'Spiel/Programm spielen/benutzen',
    },

{'type':'ImageButton',
    'name':'new',
    'position':(277, 35),
    'size':(65, 69),
    'border':'transparent',
    'file':u'C:/Dokumente und Einstellungen/Amara/Desktop/geschenk/+.bmp',
    },

{'type':'ImageButton',
    'name':'spiel3',
    'position':(182, 35),
    'size':(66, 70),
    'border':'transparent',
    'file':u'C:/Dokumente und Einstellungen/Amara/Desktop/geschenk/bild3.bmp',
    },

{'type':'ImageButton',
    'name':'spiel2',
    'position':(108, 36),
    'size':(66, 70),
    'border':'transparent',
    'file':u'C:/Dokumente und Einstellungen/Amara/Desktop/geschenk/bild2.bmp',
    },

{'type':'ImageButton',
    'name':'spiel1',
    'position':(28, 36),
    'size':(66, 71),
    'border':'transparent',
    'file':u'C:/Dokumente und Einstellungen/Amara/Desktop/geschenk/bild1.bmp',
    },

{'type':'Button',
    'name':'auswPLUS',
    'position':(270, 116),
    'size':(79, -1),
    'label':u'Ausw\xe4hlen',
    },

{'type':'Choice',
    'name':'spielauswahl',
    'position':(28, 117),
    'size':(240, -1),
    'items':[u'Crazy eights', u'Zahlen Raten', u'Hangmann', u'pypong', u'Haustier', u'Raumschiff'],
    'stringSelection':u'Crazy eights',
    },

{'type':'StaticBox',
    'name':'box1',
    'position':(13, 18),
    'size':(339, 126),
    'label':u'Spiel/Programm ausw\xe4hlen',
    },

] # end components
} # end background
] # end backgrounds
} }
Und es ist kein Dialogfenster. Es ist das Hauptfenster.
Und ich möchte einfach nur abfragen, was der User eingegeben hat.
Und ich habe jetzt noch mehr Probleme: Anscheinend kann ich während der Laufzeit keine Atribute der Choice ändern... Ich habe noch nen Button, der neue Dinge in die Choice hinzufügen soll(Der Button startet ein anderes Programm, das das neue "Ding" in eine Datei einträgt.):

Code: Alles auswählen

 a = open("games.txt")
b = a.read()
b = b.split(',')
self.components.inhalt.items = b
a.close()
Geht nicht gibts nicht(Das gilt auch für Python)!
Gremlin
User
Beiträge: 166
Registriert: Freitag 28. Mai 2010, 23:49

Also, einfach mal so ins Blaue geraten: Wenn PythonCard auf wxPython aufbaut, kannst du dann nicht einfach die Methoden der normalen wxWidgets nutzen? Also die hier: http://xoomer.virgilio.it/infinity77/wx ... ainer.html
Benutzeravatar
dodo
User
Beiträge: 73
Registriert: Mittwoch 10. November 2010, 13:43

Nee, klappt auch nicht... :(
Und dazu ist da noch das Problem mit der Choice, dass ich da keine neuen Daten reinkriege... :|
Geht nicht gibts nicht(Das gilt auch für Python)!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Auch wenns jetzt hart klingt und etwas verspätet, aber da immer wieder Leute hier mit PythonCard anfangen. Vielleicht sehen sie es das nächste mal beim googlen und machen nicht den gleichen Fehler:

Und die Moral aus der Geschicht': PythonCard verwendet man nicht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Leonidas hat geschrieben: Und die Moral aus der Geschicht': PythonCard verwendet man nicht.
Mit "benutzt" passen die Silben besser ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
dodo
User
Beiträge: 73
Registriert: Mittwoch 10. November 2010, 13:43

:(
Da habe ich schon so viel Arbeit reingesteckt...
Aber vielleicht ist es wirklich besser; ich mache es mit dem normalen WXPython.
Geht nicht gibts nicht(Das gilt auch für Python)!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

dodo hat geschrieben: Aber vielleicht ist es wirklich besser; ich mache es mit dem normalen WXPython.
Auch "wx" ist hier im Forum nicht sehr beliebt. Qt und Gtk finden hier mehr Verwendung - und bieten demzufolge auch mehr potenzielle Hilfegeber :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Hyperion hat geschrieben:Auch "wx" ist hier im Forum nicht sehr beliebt.
Interessant, dass das wxPython-Subforum mehrs als doppelt so viele Beiträge hat.
the more they change the more they stay the same
lunar

@Dav1d: Das wxPython-Forum ist ja auch wesentlich älter, ebenso wie wxPython selbst älter ist als PyQt. Viele Qt-Beiträge dürften zudem noch im "Sonstige"-Forum herumschwirren, weil die Moderatoren bei der Einrichtung des Qt-Forums 2009 nicht alle Beiträge verschoben haben.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lunar hat geschrieben:Viele Qt-Beiträge dürften zudem noch im "Sonstige"-Forum herumschwirren, weil die Moderatoren bei der Einrichtung des Qt-Forums 2009 nicht alle Beiträge verschoben haben.
Och, das halte ich für unwarscheinlich dass es tatsächlich "viele" sind, hab mir recht viel Mühe gegeben beim verschieben. ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Also bei Gtk lag ich wohl falsch, aber zumindest bei Qt kann man anhand der Daten für die "letzten Beiträge" kann man ablesen, dass im Qt-Forum mehr los ist. Da ist der letzte Eintrag auf Seite eins von Ende Oktober 2011, im w-Forum vom Juni 2011. Bei Gtk ist anscheinend doch weniger los als gefühlt.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
dodo
User
Beiträge: 73
Registriert: Mittwoch 10. November 2010, 13:43

:D Vielleicht sollte ich mich nicht immer danach richten, was ich gleich in irgendwelchen Büchern finde; sondern lieber danach, was auch andere verwenden.

Was ich damit sagen will ist, dass ich das ganze warscheinlich in QT nochmal probiere :D :D
Geht nicht gibts nicht(Das gilt auch für Python)!
Antworten