Mein erster Post zu Pashua war ein böser Witz: mit dem Skript befindet sich der Benutzer in einem Teufelskreis, da sich das GUI immer wieder selbst aufruft und nicht abschalten lässt.
Was war eigentlich die Aufgabe: ein kleines Formular, der Button, der etwas tut, und die Rückgabe im Formular.
Zu bedenken ist, das Pashua keine speziell definierten Bindings an Buttons kennt, sondern nur ein “Mach etwas!” oder “Lass es!” (cancel)
Der nachfolgende Codeschnipsel ist nun drei Fnuktionen geteilt:
- Main_func(a): die Hauptfunktion, die etwas tun soll. In diesem Fall erhöht sie eine Zahl um 1. Sie übernimmt Werte (a) aus dem Formular.
- confGUI_Builder(i) : Generiert den String, der als Konfiguration für die Pashua-GUI dient. In diesem Fall wird einfach nur er Wert des Textfeldes belegt. Das Einfügen neuer Elemente usw. wäre möglich.
- Main_GUIapp(i): eine Funktion, die durch Selbstaufruf das Formular immer wieder anzeigt und die Werte neu berechnen lässt. Der Cancel-Button beendet die Anwendung.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import Pashua
import os.path
#Der Startwert
i = 0
def Main_Func(a):
i = int(a) + 1
return i
def confGUI_Builder(i):
confGUI = """
# Set transparency: 0 is transparent, 1 is opaque
*.transparency=0.95
# Set window title
*.title = Mehr und immer mehr ...
# Add a text field
tf.type = textfield
tf.label = Gib eine Zahl ein oder starte bei Null:
tf.default = %d
tf.width = 310
cb.type=cancelbutton
""" % (i, )
return confGUI
def Main_GUIapp(i):
confGUI = confGUI_Builder(i)
Result = Pashua.run(confGUI, "utf8")
if (Result['cb'] == "1"):
print "Danke für das Benutzen dieses Programms!"
else:
i = Main_Func(int(Result['tf']))
confresult = confGUI_Builder(i)
Main_GUIapp(i)
Main_GUIapp(i)
Ich hoffe, es ist verständlich.
[...] Viel Spaß beim klicken;-) Wenn ich rausgefunden habe, wie es wirklich klappt , was ich wollte, sag ich bescheid. UPDATE: Bescheid [...]
[...] eine Datenbankabfrage über ein Formular mit Pashua (links). Es baut auf den Code-Schnipsel aus Teil I auf. Als Datenbank-Engine wird SQLite3 verwendet, das seit Python 2.5 zur Standard-Installation [...]