Eine GUI Frage

Fragen zu Tkinter.
Antworten
LemonUltra
User
Beiträge: 6
Registriert: Sonntag 25. Juni 2006, 14:46
Wohnort: Berlin

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
Meine Freundin meint ich sei neugierig... :/
(Das steht jedenfalls in ihrem Tagebuch)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

welche gui hast du denn?
LemonUltra
User
Beiträge: 6
Registriert: Sonntag 25. Juni 2006, 14:46
Wohnort: Berlin

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?
Meine Freundin meint ich sei neugierig... :/
(Das steht jedenfalls in ihrem Tagebuch)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

...ich habe das Thema mal ins richtige Forum verschoben. ;-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

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
LemonUltra
User
Beiträge: 6
Registriert: Sonntag 25. Juni 2006, 14:46
Wohnort: Berlin

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
Meine Freundin meint ich sei neugierig... :/
(Das steht jedenfalls in ihrem Tagebuch)
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

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()
LemonUltra
User
Beiträge: 6
Registriert: Sonntag 25. Juni 2006, 14:46
Wohnort: Berlin

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
Meine Freundin meint ich sei neugierig... :/
(Das steht jedenfalls in ihrem Tagebuch)
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

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
LemonUltra
User
Beiträge: 6
Registriert: Sonntag 25. Juni 2006, 14:46
Wohnort: Berlin

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
Meine Freundin meint ich sei neugierig... :/
(Das steht jedenfalls in ihrem Tagebuch)
LemonUltra
User
Beiträge: 6
Registriert: Sonntag 25. Juni 2006, 14:46
Wohnort: Berlin

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
Meine Freundin meint ich sei neugierig... :/
(Das steht jedenfalls in ihrem Tagebuch)
Antworten