2017-05-29 12 views
2

l_Titleラベル内のテキスト(クラスStartPage)を右揃えにしようとしていますが、anchorjustifyも動作していません。Python - Align Tkinter Label Text

エラーメッセージが表示されず、tkラベルではなくttkラベルが使用されている可能性がありますが、tkラベルに戻っても変更はありません。

import tkinter as tk 
from tkinter import ttk 

LARGE_FONT= ("Verdana", 12) 

def To_Print(self): 
    xf = Enter_Inputs(self,'xf') 
    print('xf = ', xf) 

def Enter_Inputs(self,x): # Enter inputs from values typed in 

     xf_In = int(self.e_xf.get()) 

     if x == 'xf': 
      x = float(xf_In)/100 

     return x 


class TestApp(tk.Tk): 

    def __init__(self, *args, **kwargs): 

     tk.Tk.__init__(self, *args, **kwargs) 

     container = tk.Frame(self) 
     container.pack(side="top", fill="both", expand = True) 
     container.grid_rowconfigure(0, weight=1) 
     container.grid_columnconfigure(0, weight=1) 

     self.frames = {} 

     frame = StartPage(container, self) 

     self.frames[StartPage] = frame 

     frame.grid(row=0, column=0, sticky="nsew") 

     self.show_frame(StartPage) 

    def show_frame(self, cont): 

     frame = self.frames[cont] 
     frame.tkraise() 


class StartPage(tk.Frame): 

    def __init__(self, parent, controller): 
     tk.Frame.__init__(self,parent) 


     self.l_Title = ttk.Label(self, text="Start Page", font=LARGE_FONT, 
           justify="right", anchor="e") 
     self.l_Title.grid(row=0, columnspan = 2) 


     self.l_xf = tk.Label(self, text="% xA of Feed") 
     self.l_xf.grid(row=1) 

     self.e_xf = tk.Entry(self) 
     self.e_xf.grid(row=1, column=1) 


     self.b_Run = tk.Button(self, text="Click to Run", command=lambda: To_Print(self)) 
     self.b_Run.grid(row=2, column=0, columnspan = 2) 


app = TestApp() 
app.mainloop() 

答えて

3

問題は、ラベルがテキストのサイズに合わせてサイズを調整することです。 justifyは、ラベルがテキストより大きい場合にのみ機能します。

あなたのケースでは、それはラベルではなく、ラベル内のテキストの位置を定義するためにはるかに簡単です:

self.l_Title.grid(row=0, columnspan = 2, sticky='e') 
+0

パーフェクト!ありがとうございました –