Ein bischen verwirrend der Thread bis jetzt.
@oscar15
Lass uns vielleicht nochmal neu starten, ich befürchte nämlich, dass wir alle hier aneinander vorbeidenken.
Magst du dafür beschreiben, wie dein Programm benutzt werden soll?
Ganz ohne Programmierhintergrund, nur das was der Anwender mit dem Programm tut und wie das dann reagiert.
zB:
Benutzer klickt auf den Knopf "Datei öffnen"
Benutzer sucht eine Datei aus
Programm zeigt Text im Anzeigebereich an
Benutzer markiert Text mit der Maus
Benutzer klickt auf den Knopf "fette Schrift"
Programm zeigt die markierte Stelle im Text in fetter Schrift an
...
cu Sebastian
Programm soll auf den Button-klick warten!
die schleife muss solange laufen, bis etwas erfüllt wurde! damit das aber erfüllt werden kann müssen die buttons, als input, gedrückt werden!
Bei JEDEM durchlauf soll das gemacht werden, also er soll warten bis der input da ist!!!
Bei JEDEM durchlauf soll das gemacht werden, also er soll warten bis der input da ist!!!
-
- User
- Beiträge: 7
- Registriert: Montag 3. April 2006, 17:58
also ungefähr so was hier?
Code: Alles auswählen
import Tkinter as tk
erfuellt = False
def func():
#hier rein was erfuellt werden soll
global erfuellt
erfuellt = True
def schleife():
while not erfuellt:
print 'bla'
root = tk.Tk()
butt = tk.Button(root, text="Button", command=func)
butt.pack()
schleife()
root.mainloop()
Dein Script funktioniert so nicht Silentbreaker, weil root.mainloop() erst nach der schleife gestartet wird, die ja aber solange läuft bis sie beendet wird... das geht ja nur wenn root.mainloop() läuft...
Wie wäre es hiermit?
Hier drückst du solange die Buttons bis ein bestimmtes Ereignis eintritt....
allerdings mal wieder ohne while-schleife (du hast ja auch noch nicht gesagt wofür du die brauchst
)
Wie wäre es hiermit?
Hier drückst du solange die Buttons bis ein bestimmtes Ereignis eintritt....
allerdings mal wieder ohne while-schleife (du hast ja auch noch nicht gesagt wofür du die brauchst

Code: Alles auswählen
#!/usr/bin/python
import Tkinter as tk
root = tk.Tk()
liste = []
def func(input):
global liste
liste.append(input)
if len(liste)>3:
print "Du hast folgende Tasten gedrueckt: ", liste
liste = []
butt1 = tk.Button(root,text="Button 1",command=lambda: func(1)).pack()
butt2 = tk.Button(root,text="Button 2",command=lambda: func(2)).pack()
butt3 = tk.Button(root,text="Button 3",command=lambda: func(3)).pack()
butt4 = tk.Button(root,text="Button 4",command=lambda: func(4)).pack()
root.mainloop()
-
- User
- Beiträge: 7
- Registriert: Montag 3. April 2006, 17:58
stimmt, hab es auf die schnelle in der IDLE getestet. Und da läuft es ja auch so. Nebenbei aber auch noch vergessen, dass man ja kein mainloop() in der IDLE benutzen soll...knekke hat geschrieben:Dein Script funktioniert so nicht Silentbreaker, weil root.mainloop() erst nach der schleife gestartet wird, die ja aber solange läuft bis sie beendet wird... das geht ja nur wenn root.mainloop() läuft...

ich glaub wir reden immer noch vorbei, ich probiers noch einmal und wenn es dann nicht klappt bin ich ein hoffnungsloser fall!!
naja mein einziges Problem ist nicht die ausgabe, sondern, dass die buttons in einer Schleife stehen und als input dienen sollen.
Das Problem ist nur, dass die Schleife mir nicht die zeit lässt zu warten sondern einfach durchrauscht, ohne mich auch nur den button geklickt zu haben!
naja mein einziges Problem ist nicht die ausgabe, sondern, dass die buttons in einer Schleife stehen und als input dienen sollen.
Das Problem ist nur, dass die Schleife mir nicht die zeit lässt zu warten sondern einfach durchrauscht, ohne mich auch nur den button geklickt zu haben!
Achtung, extrem schlampiger code:
'waitvar()' ist das was du suchst ....aber ich kann dir dazu nix erklären, da ich das selber gerade kennengelernt habe. Hab' auch keine Ahnung ob es hier richtig verwendet wurde, aber es funktioniert erstmal. Bitte um Berichterstattung, wenn du weisst wie man das richtig benutzt...
Code: Alles auswählen
#!/usr/bin/python
import Tkinter as tk
a=5
root = tk.Tk()
warteAufMich = tk.IntVar()
warteAufMich.set(1)
def yo():
global warteAufMich, a
warteAufMich.set(1)
a -= 1
def main():
global a, root, warteAufMich
while a>0:
print a
root.waitvar(warteAufMich)
print "Ziel erreicht!"
a = 5
butt = tk.Button(root, text="start", command=lambda: main()).pack()
butt1 = tk.Button(root, text="Input", command=lambda: yo()).pack()
root.mainloop()