GUI (Grafische Benutzeroberfläche) Event

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mojo-amani
User
Beiträge: 3
Registriert: Samstag 20. Juni 2015, 15:39

Hallo Leute, ich soll eine Hausarbeit für Info machen und hab leider Probleme damit. Ich soll durch bewegen der Maus,in einem gewissen Bereich, einen Pfeil bewegen und so Werte bekommen. Also der Bereich liegt auf der x-koordinate bei 242.5 bis 362.5. Durch bewegen der Maus soll einmal l2 (die Länge die links vom Pfeil ist) und l3 (die Länge die rechts vom Pfeil ist) ausgegeben werden. Leider krieg ich das nicht hin, dass sich der Pfeil durch die Maus bewegt. Ich würde mich freuen wenn mir jemand dabei helfen könnte da die Hausarbeit als Klausur gezählt wird und ich ohne diesen Event Befehl leider durch falle.
nooby
User
Beiträge: 91
Registriert: Montag 12. März 2012, 20:39
Wohnort: 127.0.0.1

Hallo Mojo-amani

Das ist ein Forum. Hier wird dir Hilfestellung gegeben, aber nicht die komplette Hausarbeit erledigt.
Solltest du Interesse an einer Hilfestellung haben, so zeig doch bitte was du bereits hast (Code).

nooby
mojo-amani
User
Beiträge: 3
Registriert: Samstag 20. Juni 2015, 15:39

Ich hab ja schon was nur ich krieg das nicht hin mit dem event, dasa sich der Pfeil bewegt. ich bräuchte halt nur einen tipp bzw Hilfestellung wie ich das hin kriegen würde


hier ist mein Quelltext:



Code: Alles auswählen

#Einfeldträger mit Kragarm

#Einlesen
from tkinter import*
from math import*

#Hauptfenster
H = Tk ()
H.title("Infomatik-Aufgabe, Name:Muhammet Güvenir , Matrikelnr.:013201904")


#Überschrift
Überschrift = Label (text="Einfeldträger mit Kragarm unter Belastung einer Gleichstrecken- und Einzellast")
Überschrift.grid(row=0 , column =0 , columnspan = 2)
                     
#Zeichnug1 erstellen
Zeichnung1 = Canvas(width ="400" , height ="300")


#Zeichnug1 bearbeiten
Zeichnung1.create_text(80,20,font = "Arial 12",text = "Konstruktion:")
Zeichnung1.create_rectangle (30,100,375,120)
Zeichnung1.create_rectangle (30,120,55,275)
Zeichnung1.create_rectangle (230,120,255,275)

#Schraffur
Zeichnung1.create_line (55,120,30,145)
Zeichnung1.create_line (35,120,30,125)
Zeichnung1.create_line (55,140,30,165)
Zeichnung1.create_line (55,160,30,185)
Zeichnung1.create_line (55,180,30,205)
Zeichnung1.create_line (55,200,30,225)
Zeichnung1.create_line (55,220,30,245)
Zeichnung1.create_line (55,240,30,265)
Zeichnung1.create_line (55,260,40,275)

Zeichnung1.create_line (235,120,230,125)
Zeichnung1.create_line (255,120,230,145)
Zeichnung1.create_line (255,140,230,165)
Zeichnung1.create_line (255,160,230,185)
Zeichnung1.create_line (255,180,230,205)
Zeichnung1.create_line (255,200,230,225)
Zeichnung1.create_line (255,220,230,245)
Zeichnung1.create_line (255,240,230,265)
Zeichnung1.create_line (255,260,240,275)

Zeichnung1.create_line (30,120,40,110)
Zeichnung1.create_line (45,105,50,100)
Zeichnung1.create_line (70,120,80,110)
Zeichnung1.create_line (85,105,90,100)
Zeichnung1.create_line (110,120,120,110)
Zeichnung1.create_line (125,105,130,100)
Zeichnung1.create_line (150,120,160,110)
Zeichnung1.create_line (165,105,170,100)
Zeichnung1.create_line (190,120,200,110)
Zeichnung1.create_line (205,105,210,100)
Zeichnung1.create_line (230,120,240,110)
Zeichnung1.create_line (245,105,250,100)
Zeichnung1.create_line (270,120,280,110)
Zeichnung1.create_line (285,105,290,100)
Zeichnung1.create_line (310,120,320,110)
Zeichnung1.create_line (325,105,330,100)
Zeichnung1.create_line (350,120,360,110)
Zeichnung1.create_line (365,105,370,100)
Zeichnung1.create_line (50,120,70,100)
Zeichnung1.create_line (90,120,110,100)
Zeichnung1.create_line (130,120,150,100)
Zeichnung1.create_line (170,120,190,100)
Zeichnung1.create_line (210,120,230,100)
Zeichnung1.create_line (250,120,270,100)
Zeichnung1.create_line (290,120,310,100)
Zeichnung1.create_line (330,120,350,100)
Zeichnung1.create_line (370,120,375,115)



Zeichnung1.create_line (30,120,40,110)
Zeichnung1.create_line (45,105,50,100)
Zeichnung1.create_line (30,120,40,110)
Zeichnung1.create_line (45,105,50,100)




#Zeichnung2 erstellen
Zeichnung2 = Canvas(width ="400" , height = "300")

#Zeichnung2 bearbeiten
Zeichnung2.create_text(80,20,font = "Arial 12",text = "Statisches System:")
Zeichnung2.create_line (42.5,112.5,362.5,112.5)

#Zeichnug2.1 Auflager
Zeichnung2.create_line (42.5,112.5,30,130)
Zeichnung2.create_line (42.5,112.5,55,130)
Zeichnung2.create_line (30,130,55,130)
Zeichnung2.create_line (25,130,60,130)
Zeichnung2.create_line (30,130,20,140)
Zeichnung2.create_line(35,130,25,140)
Zeichnung2.create_line(40,130,30,140)
Zeichnung2.create_line(45,130,35,140)
Zeichnung2.create_line(50,130,40,140)
Zeichnung2.create_line(55,130,45,140)
Zeichnung2.create_line (242.5,112.5,230,130)
Zeichnung2.create_line (242.5,112.5,255,130)
Zeichnung2.create_line (230,130,255,130)
Zeichnung2.create_line (225,132,260,132)


Zeichnung2.create_line (42.5,230,42.5,210,arrow = "last")
Zeichnung2.create_line (242.5,230,242.5,210,arrow = "last")
Zeichnung2.create_line (10,180,32,180,arrow = "last")

#Zeichnung2.1.1 Beschriftung
Zeichnung2.create_text (20,170,font = "Arial 10",text= "AH")
Zeichnung2.create_text (42.5,240,font = "Arial 10",text= "AV")
Zeichnung2.create_text (242.5,240,font = "Arial 10",text= "BV")


#Zeichnung2.2 Bemaßung
Zeichnung2.create_line (35,180,375,180)
Zeichnung2.create_line (42.5,170,42.5,190)
Zeichnung2.create_line (242.5,170,242.5,190)
Zeichnung2.create_line (52.5,170,32.5,190)
Zeichnung2.create_line (252.5,170,232.5,190)

Zeichnung2.create_line (308.5,170,308.5,190)

Zeichnung2.create_line (318.5,170,298.5,190)



Zeichnung2.create_line (362.5,170,362.5,190)

Zeichnung2.create_line (372.5,170,352.5,190)

Zeichnung2.create_line (35,200,375,200)

Zeichnung2.create_line (42.5,190,42.5,210)

Zeichnung2.create_line (372.5,190,352.5,210)

Zeichnung2.create_line (362.5,190,362.5,210)

Zeichnung2.create_line (52.5,190,32.5,210)


Zeichnung2.create_text (202.5,190,font = "Arial 10",text = "l") 

#Zeichnung2.2.1 Beschriftung
Zeichnung2.create_text (142.5,170,font = "Arial 10",text = "l1")
Zeichnung2.create_text (272.5,170,font = "Arial 10",text = "l2")
Zeichnung2.create_text (332.5,170,font = "Arial 10",text = "l3")


#Zeichnug2.3 Lasten
Zeichnung2.create_rectangle (42.5,80,242.5,100)
Zeichnung2.create_line (308.5,80,308.5,115, arrow = "last")
Zeichnung2.create_line (42.5,80,42.5,100, arrow = "last")
Zeichnung2.create_line (82.5,80,82.5,100, arrow = "last")
Zeichnung2.create_line (122.5,80,122.5,100, arrow = "last")
Zeichnung2.create_line (162.5,80,162.5,100, arrow = "last")
Zeichnung2.create_line (202.5,80,202.5,100, arrow = "last")
Zeichnung2.create_line (242.5,80,242.5,100, arrow = "last")


#Zeichnung2.3.1 Beschriftung
Zeichnung2.create_text (310.5,70,font = "Arial 10",text= "F")
Zeichnung2.create_text (142.5,70,font = "Arial 10",text= "q")

#Zeichnung2.4 Schnittufer


Zeichnung2.create_line (46.5,118,62.5,118)
Zeichnung2.create_line (72.5,118,92.5,118)
Zeichnung2.create_line (102.5,118,122.5,118)
Zeichnung2.create_line (132.5,118,152.5,118)
Zeichnung2.create_line (162.5,118,182.5,118)
Zeichnung2.create_line (192.5,118,212.5,118)
Zeichnung2.create_line (222.5,118,240.5,118)
Zeichnung2.create_line (246.5,118,262.5,118)
Zeichnung2.create_line (272.5,118,292.5,118)
Zeichnung2.create_line (302.5,118,322.5,118)
Zeichnung2.create_line (332.5,118,352.5,118)
Zeichnung2.create_line (358.5,118,362.5,118)




#Zeile 1: Zeichnung 1 hochladen
Zeichnung1.grid(row = 1 , column = 0 , columnspan = 2)


#Zeile 2: Zeichnung 2 hochladen
Zeichnung2.grid(row = 1 , column = 2 , columnspan = 2)


#Zeile 3: Eingabe von q
Label(text ="q =").grid(row = 3 , column = 0, sticky = "e")
Q= Entry(width = 20)
Q.grid(row = 3 , column = 1, sticky = "we")
Label(text ="kN/m").grid(row = 3 , column = 2 , sticky = "w")

#Zeile 4: Eingabe von F
Label(text ="F =").grid(row = 4 , column = 0 , sticky = "e")
F= Entry(width = 20)
F.grid(row = 4 , column = 1 , sticky = "we")
Label(text ="kN").grid(row = 4 , column = 2 , sticky = "w")

#Zeile 5: Eingabe von l1
Label(text ="l1 =").grid(row = 6 , column = 0 , sticky = "e")
l1= Entry(width = 20)
l1.grid(row = 6 , column = 1 , sticky = "we")
Label(text ="m").grid(row = 6 , column = 2 , sticky = "w")

#Zeile 6: Eingabe von l2
Label(text ="l2 =").grid(row = 7 , column = 0 , sticky = "e")
l2= Entry(width = 20)
l2.grid(row = 7 , column = 1 , sticky = "we")
Label(text ="m").grid(row = 7 , column = 2 , sticky = "w")

#Zeile 7: Eingabe von l3
Label(text ="l3 =").grid(row = 8 , column = 0 , sticky = "e")
l3= Entry(width = 20)
l3.grid(row = 8 , column = 1 , sticky = "we")
Label(text ="m").grid(row = 8 , column = 2 , sticky = "w")

#funktion berechnen
def berechnen():
    try:
        f = float(F.get())
        q = float(Q.get())
        L1 = float(l1.get())
        L2 = float(l2.get())
        L3 = float(l3.get())
        if f >= 0  and q >= 0 and L1 >= 0 and L2 >= 0 and L3 >= 0:
            BV=(q*L1*L1/2+f*(L1+L2))/L1
            AV = q*L1+f-BV
            Ah = float(0)
   
            L = L1 + L2 + L3
            AH.delete(0,"end")
            AH.insert(0,"%.2f"%Ah)

            Bv.delete(0,"end")
            Bv.insert(0,"%.2f"%BV)
            l.delete(0,"end")
            l.insert(0,"%.2f"%L)
            Av.delete(0,"end")
            Av.insert(0,"%.2f"%AV)
        else:
            F.delete(0,"end")
            Q.delete(0,"end")
            l1.delete(0,"end")
            l2.delete(0,"end")
            l3.delete(0,"end")
            F.insert(0,str("keine negativen werte"))
            Q.insert(0,str("keine negativen werte"))
            l1.insert(0,str("keine negativen werte"))
            l2.insert(0,str("keine negativen werte"))
            l3.insert(0,str("keine negativen werte"))
    except:
        F.delete(0,"end")
        Q.delete(0,"end")
        l1.delete(0,"end")
        l2.delete(0,"end")
        l3.delete(0,"end")
        F.insert(0,str("Werte eingeben"))
        Q.insert(0,str("Werte eingeben"))
        l1.insert(0,str("Werte eingeben"))
        l2.insert(0,str("Werte eingeben"))
        l3.insert(0,str("Werte eingeben"))
       




#Zeile 8: Der Knopf "berechnen!"
b1 = Button(text= "Berechnen" , command = berechnen)
b1.grid(row = 9 , column = 1 , columnspan = 1 , sticky = "nsew")

#Zeile 9: Ausgabe von Av
Label(text ="Av =").grid(row = 10 , column = 0 , sticky = "e")
Av= Entry(width = 20)
Av.grid(row = 10 , column = 1 , sticky = "we")
Label(text ="kN").grid(row = 10 , column = 2 , sticky = "w")

#Zeile 10: Ausgabe von Bv
Label(text ="Bv =").grid(row = 11 , column = 0 , sticky = "e")
Bv= Entry(width = 20)
Bv.grid(row = 11 , column = 1 , sticky = "we")
Label(text ="kN").grid(row = 11 , column = 2 , sticky = "w")

#Zeile 11: Ausgabe von AH
Label(text ="AH =").grid(row = 12 , column = 0 , sticky = "e")
AH= Entry(width = 20)
AH.grid(row = 12, column = 1 , sticky = "we")
Label(text ="kN").grid(row = 12 , column = 2 , sticky = "w")

#Zeile 12: Ausgabe von l
Label(text ="l =").grid(row = 13 , column = 0 , sticky = "e")
l= Entry(width = 20)
l.grid(row = 13 , column = 1 , sticky = "we")
Label(text ="m").grid(row = 13 , column = 2 , sticky = "w")


#taste löschen
def löschen():
    F.delete(0,"end")
    l1.delete(0,"end")
    l2.delete(0,"end")
    l3.delete(0,"end")
    Q.delete(0,"end")
    Av.delete(0,"end")
    Bv.delete(0,"end")
    AH.delete(0,"end")
    l.delete(0,"end")


#Zeile 13: Der Knopf "löschen!"
b1 = Button(text= "Löschen" , command = löschen)
b1.grid(row = 20 , column = 1 , columnspan = 1 , sticky = "nsew")



#Auf Eingabe warten
H.mainloop()
Zuletzt geändert von Anonymous am Sonntag 21. Juni 2015, 01:03, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@mojo-amani: Du solltest dringend Deinen Code überarbeiten. Im Forum gibt es Code-Tags, damit der Code überhaupt lesbar ist. *-Importe sollte man vermeiden, weil man nicht weiß, welche Namen man sich in den eigenen Namensraum holt. Bei Tkinter sind das 160. Auf oberster Ebene sollte keine ausführbare Anweisungen stehen, sondern alles in Funktionen stehen. Ein paar mehr sinnvoll benannte Funktionen wären sowieso gut. Aprops Benennung: Variablennamen sollten etwas über die Verwendung der Variable aussagen, bei H, Q, F, I2, I3, ... ist das nicht der Fall. Außerdem gibt es eine Namenskonvention, die in PEP 8 beschrieben ist. Man darf keine nackten Excepts benutzen, weil damit alle Fehler abgefangen werden, auch NameError und ähnliche.

Und wo wird jetzt irgendetwas mit der Maus gemacht? Wo hast Du konkret Probleme, was erwartest Du als Ergebnis, was bekommst Du statt dessen?
mojo-amani
User
Beiträge: 3
Registriert: Samstag 20. Juni 2015, 15:39

Ich würde nur gerne wissen wie ich objekte wie zum Beispiel einen pfeil, den ich gezeichnet habe durch den Befehl event bewegen kann.hab mir zahlreiche videos angeguckt und leider kam dabei nichts raus. Ich würde mich freuen wenn mir das jemand verständlich erklären würde bin nicht so fit bei info .
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Momentan kannst du das gar nicht, weil dein Code keinen "Pfeil" kennt. Der erste Schritt ist also die Objekte, die du verschieben willst spaeter identifizierbar zu machen, z.b. indem du dir alle Linien/Koordinaten/.. merkst, die zu diesem Objekt gehoeren.
Antworten