2017-10-06 12 views
2

各行の両側のテキストウィジェットに2つの異なる文字列を揃えることは可能ですか?私は以下を試しましたが、期待どおりに動作していません。tkinterテキストウィジェットの文字列を左右に並べる

from tkinter import * 

root = Tk() 

t = Text(root, height=27, width=30) 
t.tag_configure("right", justify='right') 
t.tag_configure("left", justify='left') 
for i in range(100): 
    t.insert("1.0", i) 
    t.tag_add("left", "1.0", "end") 
    t.insert("1.0", "g\n") 
    t.tag_add("right", "1.0", "end") 
t.pack(side="left", fill="y") 

root.mainloop() 
+0

、私は右ですか?しかし、同じ行の2つの部分を別々に正当化することは可能ではないと私は考えています。 –

+0

はい、それは私が欲しいものです。悪いことはありえません。 – Max2603

+0

数字用とテキスト用の2つのテキストウィジェットを使用しなければならないと思います。 –

答えて

5

あなたはワードプロセッサでそれを行う可能性があると同じように、右揃えのタブストップを使用して、ラインごとにこれを行うことができます。

トリックは、ウィンドウのサイズが変わるたびにタブストップをリセットする必要があるということです。 <Configure>のバインディングでこれを行うことができます。これはウィンドウサイズが変わるたびに呼び出されます。

例:あなたは左の数、右側に 'G' を持ちたい

import tkinter as tk 

def reset_tabstop(event): 
    event.widget.configure(tabs=(event.width-8, "right")) 

root = tk.Tk() 
text = tk.Text(root, height=8) 
text.pack(side="top", fill="both", expand=True) 
text.insert("end", "this is left\tthis is right\n") 
text.insert("end", "this is another left-justified string\tthis is another on the right\n") 

text.bind("<Configure>", reset_tabstop) 
root.mainloop() 

enter image description here

関連する問題