Seite 1 von 1
LuckyWords - erste Alpha (0.3.0)
Verfasst: Freitag 12. Dezember 2014, 15:56
von CasualCoding.org
Hallo Forum!
Ich habe es tatsächlich endlich geschafft, eine GUI-Anwendung auf die Beine zu stellen. Das Projekt hört auf den Namen "LuckyWords", ist eine Mischung aus "Hangman" und "Glücksrad" und kann auf GitHub heruntergeladen werden (
https://github.com/casualcoding/luckywords). Wenn gewünscht, stelle ich den Quelltext aber auch in Code-Tags hier ein.
Benötigt werden Python 3 und PyQt4.
Getestet habe ich nur unter Linux und Windows XP. Außerdem sind noch nicht alle geplanten Features drin und es hat nur das 'File'-Menü eine Funktion, aber es ist spielbar. Kommentare, Hinweise, Anregungen werden gern genommen, auch Tester unter anderen Plattformen sind willkommen.
Liebe Grüße,
Dennis
Re: LuckyWords - erste Alpha (0.3.0)
Verfasst: Freitag 12. Dezember 2014, 16:28
von Sirius3
@CasualCoding.org: diese 26 kopierten Zeilen würde ich ja jeweils in einer Schleife abarbeiten und das ui-File direkt laden, anstatt es nach .py umzuwandeln.
Re: LuckyWords - erste Alpha (0.3.0)
Verfasst: Freitag 12. Dezember 2014, 16:51
von snafu
Das Verbinden der Buchstaben-Buttons in der ``luckywords.py`` liesse sich auch so schreiben:
Code: Alles auswählen
import string
# ...
def createConnects(self):
for character in string.ascii_lowercase:
button = getattr(self.ui, 'button_' + character.upper())
button.clicked.connect(lambda: self.check(character))
Und in ``keyPressEvent`` bietet sich ein Vorgehen in dieser Art ebenfalls an.
Re: LuckyWords - erste Alpha (0.3.0)
Verfasst: Freitag 12. Dezember 2014, 17:36
von BlackJack
@snafu: Da bist Du in eine Falle getappt: Die ``lambda``-Funktion wird so nicht funktionieren weil `character` erst beim Ausführen der Funktion aufgelöst wird und zu dem Zeitpunkt ist das dann für alle Buttons das 'z'.
Re: LuckyWords - erste Alpha (0.3.0)
Verfasst: Freitag 12. Dezember 2014, 18:32
von snafu
Das ist echt fies. Dann halt so:
Code: Alles auswählen
import functools
import string
# ...
def createConnects(self):
for character in string.ascii_lowercase:
button = getattr(self.ui, 'button_' + character.upper())
button.clicked.connect(functools.partial(self.check, character))
Re: LuckyWords - erste Alpha (0.3.0)
Verfasst: Freitag 12. Dezember 2014, 20:16
von Astorek
Was auch funktioniert hätte: Man kann bei lambda auch die Parameter angeben, die zum Zeitpunkt beim Setzen der Funktion gilt.
Statt in Zeile 9 das zu schreiben:
kann man stattdessen schreiben:
Code: Alles auswählen
button.clicked.connect(lambda character=character: self.check(character))
Re: LuckyWords - erste Alpha (0.3.0)
Verfasst: Freitag 12. Dezember 2014, 20:39
von CasualCoding.org
Wow, super, danke für die Tipps! Genau dieser Teil mit den 26 Connects hat mich nämlich auch gestört, nur hatte ich keine Idee, wie ich das ändern kann (zumal ich die GUI mit dem Designer aufsetze und nicht manuell).
Das gehe ich gleich mal an!
Re: LuckyWords - erste Alpha (0.3.0)
Verfasst: Freitag 12. Dezember 2014, 21:24
von snafu
Astorek hat geschrieben:Code: Alles auswählen
button.clicked.connect(lambda character=character: self.check(character))
Stimmt. Oder wenn die Zeile halt nicht so lang werden soll:
Code: Alles auswählen
button.clicked.connect(lambda c=character: self.check(c))
Re: LuckyWords - erste Alpha (0.3.0)
Verfasst: Samstag 13. Dezember 2014, 18:18
von Hyperion
@CasualCoding.org: Wie wäre es mal mit einem netten Screenshot auf Github? Finde ich bei Programmen immer animierend
