Programm soll auf den Button-klick warten!

Fragen zu Tkinter.
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Programm soll auf den Button-klick warten!

Beitragvon oscar15 » Samstag 1. April 2006, 17:29

so ich habe mal wieder ein frage! mal? naja....

ich hab das Problem, dass ich eine graphische ausgábe mache und ich meine inputs durch buttons bekomme, doch mein Programm macht einfach weiter ohne auch nur auf einen Input zu warten!

gib es nicht einen Befehl, dass das Programm sollange warten soll, bis ein ein button geklickt wurde, weil ich kann auch während es in der Schleife festhängt nicht den Button betätigen!

danke schon mal
Benutzeravatar
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

Beitragvon knekke » Samstag 1. April 2006, 18:25

Ich kann mich dunkel erinnern, dass ich so ein Problem auch mal mit TkInter hatte (wenn du das überhaupt benutzt). Ich habe dann lambda in dem Button-command benutzt. In etwa so:

Code: Alles auswählen

butt = Button(rot,text="text",width=5,command=lambda: machWas()).grid(row=0,column=0)


Ob das elegant ist oder überhaupt Not tut?? Keine Ahnung, aber es hat funktioniert....
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Beitragvon oscar15 » Samstag 1. April 2006, 18:59

1. bei mir muss ich cv statt rot eingeben
2.

Code: Alles auswählen

command=lambda: machWas()
was soll ich für machWas einsetztem?

normal hab ich es so:

Code: Alles auswählen

def text():
   blabla

bbutt = Button(cv, text="text", command=text)
wbutt = Window(cv, 900, 50, anchor="nw", window=bbutt)
Benutzeravatar
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

Beitragvon knekke » Samstag 1. April 2006, 23:24

was soll ich für machWas einsetztem?

... die Funktion die du ausführen willst, also text.[/quote]
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Beitragvon oscar15 » Sonntag 2. April 2006, 00:08

also so wie ich es geschriben habe!

aber mein button sitzt in in einer while-schleife, die mir nicht die chance lässt, den button zu drücken, gibt es den dafü keinen befehl?
Benutzeravatar
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

Beitragvon knekke » Sonntag 2. April 2006, 00:45

Keine Ahnung, ob es dafür einen Befehl gibt. Aber als notlösung könntest du eine Variable 'isClicked' erzeugen, die am anfang der Schleife immer auf FALSE gesetzt wird. Und in die Funktion die der Button aufruft schreibst du 'isClicked = TRUE'.
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Beitragvon oscar15 » Sonntag 2. April 2006, 01:30

das problem ist ja, dass ich die schleife immer weiter un weiter geht und ich den buton nicht betätigen kann!
Sie wiederholt sich immer und immer wieder und ich bekomme net die chance den button zu betätigen!!^^

ich bin maa wech
n8

Flo
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Beitragvon Mad-Marty » Sonntag 2. April 2006, 10:28

klingt nach nem schwer vermurksten aufbau wenn der button nicht klickbar ist.

Trenne den GUI idle loop von der ausführung, ansonsten wirst du immer probleme mit nicht reagierenden widgets haben.

Ohne das du hier jetzt echten code postest wird dir auch niemand helfen können - im besonderen das "while button" konstrukt
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Beitragvon oscar15 » Sonntag 2. April 2006, 11:19

ich werde es dann mal heuer mittag reinstellen!
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Beitragvon oscar15 » Sonntag 2. April 2006, 14:14

Ich benutze die Buttons als input! Alles in einer while schleife:

Code: Alles auswählen

def textd():
    global a
    a = 4

hf = Tk()
cv = Canvas(hf, width=4000, height=2200)
cv.pack()

while Prüf1 > 0 or PrüfII > 0:
             
    bbutt = Button(cv, text="text", command=textd)
    wbutt = Window(cv, 900, 50, anchor="nw", window=bbutt)
Bernhard
User
Beiträge: 136
Registriert: Sonntag 15. Januar 2006, 20:31
Wohnort: Greifswald
Kontaktdaten:

Beitragvon Bernhard » Sonntag 2. April 2006, 22:12

Sorry, bin nicht der Profi, aber Dein Code erscheint mir sehr komisch: Da wird in jedem Schleifendurchlauf ein Button und ein Window konstruiert aber nicht ge-pack()-t. Würde der Button ge-pack()-t, dann würde eine Variable a auf 4 gesetzt aber an den Prüfvariablen der Schleife wird nichts verändert.

Kann es sein, dass Du einfach nur nach
app.mainloop() suchst?

Gruß,
Bernhard
Benutzeravatar
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

Beitragvon knekke » Montag 3. April 2006, 13:09

Mir erschliesst sich leider auch nicht so ganz was du eigentlich vohast und wofuer du die while-schleife brauchst. Evtl. kannst du hiermit was anfangen:

Code: Alles auswählen

#!/usr/bin/python
 
import Tkinter as tk
 
root = tk.Tk()
a = 1
 
def func():
    global a
    a += 1
    print a
    if a > 10:
        print "stop"
     
butt = tk.Button(root, text="Button", command=lambda: func()).pack()
root.mainloop()


Keine while-schleife drin, und das global ist auch etwas ungluecklich, aber vielleicht hilft's ja....
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Beitragvon oscar15 » Montag 3. April 2006, 13:59

das problem ist, dass ich für den rest des programmes eine while brauche!!
Benutzeravatar
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

Beitragvon knekke » Montag 3. April 2006, 14:17

Dann erklaere doch mal bitte was du machen willst... aus dem code-schnipsel da oben werde ich nicht wirklich schlau. Bei Knopfdruck wird a = 4 und Pruef1 und 2 werden gar nicht weiter angegeben.....
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Beitragvon oscar15 » Montag 3. April 2006, 14:34

es ist ein Schleife die solange durchläuft, bis sie erfüllt wurde! logisch oder?
In ihr findet das Programm statt, von anfang bis ende!

Ich probier aber uahc mal deines noch aus!

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder