Seite 1 von 1

Ausrichtung von Test mit justify

Verfasst: Donnerstag 18. September 2003, 08:47
von Andi
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.

Verfasst: Donnerstag 18. September 2003, 12:11
von jochim
Nimm anstelle von justify die Option 'anchor'. Also z. B. : ..., anchor = W, ...

MfG
Jochim

das geht auch nicht

Verfasst: Donnerstag 18. September 2003, 14:33
von Andi
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

Verfasst: Freitag 19. September 2003, 14:48
von jochim
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

Verfasst: Freitag 19. September 2003, 15:31
von Dookie
Hallo,

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


Gruß

Dookie

reload?

Verfasst: Montag 22. September 2003, 03:58
von Andi
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?

Verfasst: Montag 22. September 2003, 08:49
von Milan
Das tut Python nur im IDLE intern. Startest du Pythonscripte normal, wird immer die Datei mit der letzen Änderungszeit genommen, also auch .py Dateien...

Verfasst: Montag 22. September 2003, 12:02
von Dookie
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