Seite 1 von 1

Eine GUI Frage

Verfasst: Sonntag 25. Juni 2006, 14:49
von LemonUltra
Hi

ich bin neu hier im Forum hoffe daher das ich nicht das falsche Forum für meine Frage gewählt hab..

Also ich hab ein Fenster mit Python erstellt und ich will das man das Fenster nicht mit der Maus vergrößern kann.

weiß jemand wie das geht?

Danke, Limo

Verfasst: Sonntag 25. Juni 2006, 15:17
von murph
welche gui hast du denn?

Verfasst: Sonntag 25. Juni 2006, 18:28
von LemonUltra
Ich benutze TK.

Also ich will halt das das Fenster fixiert ist, so wie beim Sound Fenster von Windows z.B.

das muss doch gehen oder?

Verfasst: Sonntag 25. Juni 2006, 20:12
von gerold
...ich habe das Thema mal ins richtige Forum verschoben. ;-)

Verfasst: Sonntag 25. Juni 2006, 22:43
von Mawilo
Hallo,

mit wm_resizable kannst du ein Fenster unveränderbar machen.

Code: Alles auswählen

root = Tk()
root.wm_resizable(0,0)
label = Label(root, text = 'test', width= 50, height = 20)
label.pack(fill=X)

root.mainloop()
Stephan

Verfasst: Dienstag 27. Juni 2006, 15:29
von LemonUltra
Aha das klappt ja klasse :wink:

Vielen Dank!!!

Doch jetzt hab ich ein 2 Problem, weiß jemand wie ich die länge von einem erzeugtem Button oder Label bestimmen kann?

Angenommen ich hab ein Label mit width= 50 und height = 20 erstellt muss es doch irgendeine Funktion geben damit ich diese Werte abrufen kann, oder?

Wäre dankbar für weitere Hilfe

Limo

Verfasst: Dienstag 27. Juni 2006, 16:55
von Mawilo

Code: Alles auswählen

from Tkinter import * 

root = Tk()
label = Label(root, text= 'Das ist der Text', width= 50, height= 20)
label.pack()

print label['width']
print label['height']

root.mainloop()

Verfasst: Dienstag 27. Juni 2006, 17:21
von LemonUltra
8)

Ja gut diese möglichkeit es abzurufen funktioniert aber nur wenn ich die Breite oder Höhe einmal bestimmt habe..

Mein Problem ist ich will bestimmte Widgets nicht aus dem Fenster ziehen, daher hab ich das geschrieben:

Code: Alles auswählen

def element_bewegen(self, event):
        if self.pressed:
            aktx=int(event.x)+int(self.aktElement.place_info()['x'])-self.xEM
            akty=int(event.y)+int(self.aktElement.place_info()['y'])-self.yEM
           
            print self.aktElement.cget("width")
            print self.aktElement.cget("height")
            print self.aktElement
            print "xD"
            print self.aktElement['width'] 
            breite=self.b
            hoehe=self.h

            if aktx>0 and akty>0 and aktx<breite and akty<hoehe: 
               self.aktElement.place_configure(x=aktx,y=akty)
            if aktx>0 and akty>0 and aktx<breite and akty<hoehe: 
               self.aktElement.place_configure(x=aktx,y=akty)
            elif aktx>0 and akty<0 and aktx<breite:
               self.aktElement.place_configure(x=aktx,y=0) 
            elif aktx<0 and akty>0 and akty<hoehe:
               self.aktElement.place_configure(x=0,y=akty)
            elif akty>0 and aktx>breite and akty<hoehe:
                self.aktElement.place_configure(x=breite,y=akty)
            elif aktx<breite and akty>hoehe and aktx>0:
                self.aktElement.place_configure(x=aktx,y=hoehe)
            elif aktx<0 and akty<0:
                self.aktElement.place_configure(x=0,y=0)
            elif aktx>breite and akty<0:
                self.aktElement.place_configure(x=breite,y=0)
            elif aktx>breite and akty>hoehe:
                self.aktElement.place_configure(x=breite,y=hoehe)
            elif aktx<0 and akty>hoehe:
                self.aktElement.place_configure(x=0,y=hoehe)
            else:
                pass
 
Wenn ich ein Widget ausgewähl habe ist pressed gleich 1, die Position wo ich das Widget hinschieben will ist, die alte Maus-Coordinate im Widget+ die Position vom Widget im Fenster- der neuen Maus Coordinate im Widget(sonst würde das Widget immer an den Mauszeiger springen)

Ich habe mir daraufhin gedacht, damit ich das Widget nicht aus dem Fenster schieben kann, prüf ich die Folgende situationen, die oben stehen. Das Problem : wenn der Mauszeiger auf der max.Länge oder Breite ist, ist das Widget zwar noch teils im Fenster aber auch teils draußen, für x<0 und y<0 ist das kein Problem aber die anderen Rnder kann ich schwer eingrenzen..

Also nur damit ihr checked wieso ich grade so dringend die größe eines Widegts brauche..... (Wenn ich diese größe hätte würde ich einfach die Breite aus = Der Breite des Fensters-(die Breite des Widgets-(minus)die Mauscoordinate im Widget ))

ODer gibt es ein Befehl dafür, Widgets nicht aus dem Fenster zu lassen und ich mach einfach alles viel zu Kompliziert?

Brauche Hilfe!

Vielen Dank, Limo

Verfasst: Dienstag 27. Juni 2006, 17:55
von Mawilo
Hallo,

um die Position eines Widget abzufragen, kannst du wm_geometry() verwenden.

Code: Alles auswählen

from Tkinter import * 

def position():
    pos = root.wm_geometry()
    print pos

root = Tk()
label = Label(root, text= 'Das ist der Text')
label.pack()
button = Button(root,text= 'Position', command= position)
button.pack()

root.mainloop()
Zu dem Thema kannst du auch hier was nachlesen.
Stephan

Verfasst: Mittwoch 28. Juni 2006, 20:11
von LemonUltra
Leider funktioniert das nur für das Fenster und nicht für den Button =(

Aber ansonsten fast hilfreich

:wink:

Danke schonmal diese Liste hat viele interessante Befehle.

Limo

Verfasst: Freitag 30. Juni 2006, 07:55
von LemonUltra

Code: Alles auswählen

from Tkinter import * 

def position():
    pos = button.winfo_width()#<---Hier

    print pos

root = Tk()
label = Label(root, text= 'Das ist der Text')
label.pack()
button = Button(root,text= 'Position', command= position)
button.pack()

root.mainloop()
Ok Ich hab es rausgefunden, dass ist der Befehl wenn man die Breite von einem Objekt und nicht von einem Fenster kriegen will(button.winfo_width())

Danke vielmals für den Link an Stephan