Ausrichtung von Test mit justify

Fragen zu Tkinter.
Antworten
Andi
User
Beiträge: 24
Registriert: Sonntag 27. Juli 2003, 14:23
Wohnort: Großkarolinenfeld

Donnerstag 18. September 2003, 08:47

Hallo zusammen,

wieso richtet folgender Code den Text der zwei Labels nicht linksbündig aus. Weiß jemand vielleicht Abhilfe, bin mit meinem Latein am Ende.

Code: Alles auswählen

from Tkinter import *

import ModalDialog
reload(ModalDialog)

def test():
    diag=testMe(root)

class testMe(Toplevel):
    def __init__(self,master):
        Toplevel.__init__(self,master)
        Label(self,text="hello 1",justify=LEFT).grid(row=1,column=1)
        Label(self,text="hello 2",justify=LEFT).grid(row=1,column=2)          


root=Tk()
button=Button(root,text="klick",command=test)
button.pack(side=LEFT)
root.mainloop()
bzw. so würde es gehen:

Code: Alles auswählen

from Tkinter import *

import ModalDialog
reload(ModalDialog)

def test():
    diag=testMe(root)

class testMe(Toplevel):
    def __init__(self,master):
        Toplevel.__init__(self,master)
        self.frame1=Frame(self)
        self.frame2=Frame(self)
        self.frame1.pack(side=LEFT,fill=X)
        self.frame2.pack(side=LEFT,fill=X)
        Label(self.frame1,text="hello 1",justify=LEFT).grid(row=1,column=1)
        Label(self.frame2,text="hello 2",justify=LEFT).grid(row=1,column=1)          


root=Tk()
button=Button(root,text="klick",command=test)
button.pack(side=LEFT)
root.mainloop()
jedoch funktioniert es dann wieder nicht sobald ich dem pack - geometriemanager als side Parameter irgendetwas anderes als LEFT oder RIGHT übergebe.

Was mache ich denn bitte falsch.
mfg

(der Anderl aus Bavaria der bei den Preißn war und jetzt wieda in bayern is)
jochim
User
Beiträge: 32
Registriert: Montag 5. August 2002, 20:47
Wohnort: Dortmund

Donnerstag 18. September 2003, 12:11

Nimm anstelle von justify die Option 'anchor'. Also z. B. : ..., anchor = W, ...

MfG
Jochim
Andi
User
Beiträge: 24
Registriert: Sonntag 27. Juli 2003, 14:23
Wohnort: Großkarolinenfeld

Donnerstag 18. September 2003, 14:33

hallo,

folglich müsste das deiner Meinung nach funktionieren oder?

Code: Alles auswählen

from Tkinter import * 

import ModalDialog 
reload(ModalDialog) 

def test(): 
    diag=testMe(root) 

class testMe(Toplevel): 
    def __init__(self,master): 
        Toplevel.__init__(self,master) 
        self.frame1=Frame(self) 
        self.frame2=Frame(self) 
        self.frame1.pack(side=TOP,fill=X) 
        self.frame2.pack(side=TOP,fill=X) 
        Label(self.frame1,text="hello 1",anchor=E).grid(row=1,column=1) 
        Label(self.frame2,text="hello 2",anchor=W).grid(row=1,column=1)          


root=Tk() 
button=Button(root,text="klick",command=test) 
button.pack(side=LEFT) 
root.mainloop()
Das tut es aber leider nicht.

mfg andi
mfg

(der Anderl aus Bavaria der bei den Preißn war und jetzt wieda in bayern is)
jochim
User
Beiträge: 32
Registriert: Montag 5. August 2002, 20:47
Wohnort: Dortmund

Freitag 19. September 2003, 14:48

Die Grösse des Labels wird durch die Länge des dargestellten Texts bestimmt. Das heisst , das Label ist immer so gross wie der auf dem Label ausgegene Text, somit ist eine Ausrichtung nach W oder O nicht zu erkennen.
Wird das Label vergrössert, z. B. mit der Option 'width = 20' wird die Ausrichtung sofort sichtbar.
Nebenbei haben die reload-Anweisungen bei mir beim Testen deines Programms die Ausführung des Programms verhindert. Die kannst du also weglassen.

MfG
Jochim
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Freitag 19. September 2003, 15:31

Hallo,

reload ist nur zum Testen von Modulen in der Pythonshell, das hat in einem Modul nichts zu suchen!


Gruß

Dookie
Andi
User
Beiträge: 24
Registriert: Sonntag 27. Juli 2003, 14:23
Wohnort: Großkarolinenfeld

Montag 22. September 2003, 03:58

wenn ich noch in der entwicklungsphase bin greift mein prog. immer auf die bereits kompilierte form der module zu und nicht auf aktualisierte py Dateien. darum verwende ich reload. wieso auch nicht?
mfg

(der Anderl aus Bavaria der bei den Preißn war und jetzt wieda in bayern is)
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Montag 22. September 2003, 08:49

Das tut Python nur im IDLE intern. Startest du Pythonscripte normal, wird immer die Datei mit der letzen Änderungszeit genommen, also auch .py Dateien...
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Montag 22. September 2003, 12:02

Ich verwende kein Idle sondern gvim und IPython, ansonst schau mal hier runterscrollen zu reload() ist oft nicht ganz komplikationslos imt dem reload() Darum hat es für mich in einem Modul nichts zu suchen. Wie leicht vergisst man es nach der Testphase wieder zu entfernen.


Gruß

Dookie
Antworten