2017-01-14 5 views
2

Python 2.6.1または2.7.9の使用TkinterのEntryウィジェットentry.insertは、左揃えを破棄しているようです。テキストを左揃えにするにはどうすればよいですか?具体的には、entry.get()がウィジェットに入力したものを提供した後、最初に追加のテキストを自動的に挿入して再表示します。再表示されると、正当化〜時々〜が変わります。挿入後のTkinterエントリのテキストの正当性

具体的には、20文字以下の文字列を入力し、entry.insertを長くすると、入力ウィジェットの右側から見えない文字列の一部で問題なく動作します。 21文字以上の文字列を入力してentry.insertを長くすると、右寄せとして と表示されるので、文字列の最後だけが表示され、左側には「ありがとう」が見えません。

なぜこのようなことが起こり、どうやって止めるのですか?私はEntry Widget Justification - text longer than widgetと考えましたが、彼のケースでは、OPはインサートをしていないし、あいまいな質問は良い答えを得ていませんでした。

Enterウィジェットのデフォルトで表示されるテキストサイズは20文字ですが、指定したエントリの幅についても同じ現象が発生します。現象はまた、Raspberry Pi 3とMac OSXでも発生します。

# demo of broken justification 1/14/2017 
import Tkinter as tk 
master = tk.Tk() 

def clear_entry(): 
    entry.delete(0, tk.END) 
    entry.config(bg='white') 

def process_butninput(): 
    if entry.get()=="done": 
     master.destroy() 
    else: 
     entry.insert(0,"THANK YOU ") 
     datarecord = entry.get() 
     print("%s" % datarecord) # debugging only 
     entry.config(bg='green') 
     entry.after(1500, clear_entry) 

label = tk.Label(master, text="Enter text: ") 
label.grid(row=0, padx=20, pady=30) 
entry = tk.Entry(master) 
entry.grid(row=0, column=1) 
button = tk.Button(master, text='Enter', command=process_butninput) 
button.grid(row=0, column=3, padx=20, pady=30) 

master.mainloop() 
+0

カーソルを左の 'entry.icursor(0)'に移動することもできます。カーソルは常に表示されるので、最後にカーソルを置くとテキストを右揃えにすることができます。 – furas

+0

アイデアをありがとう。背景を緑に変える直前にあなたの声明を追加しました。問題は残っている。 //つまり、カーソルが常に表示されていれば興味深いですが、これが正当化と競合する場合はどうでしょうか?それは紛争のように見える。 – Brian

+0

遅延を10秒に増やしてからの追加情報(フィールドが緑色のときにカーソルで再生できるように):「後」の遅延の間、カーソルがテキストの左側から始まります。言い換えれば、それは見えません。しかし、私は左または右の矢印を使用するとすぐに、テキストがすぐに正当化し、私は見て、カーソルを使用することができます。まだ問題は残っています。 – Brian

答えて

0

私は完全にあなたが求めているものを理解していないが、あなたは、単に位置0(ゼロ)の文字になるように「ありがとう」を挿入した後、エントリウィジェットの内容をスクロールする必要があるようですね可視。

entry.insert(0,"THANK YOU ") 
entry.xview(0) 
1

テキストjustifyは、アンダーサイズのテキスト文字列にのみ関連します。テキスト文字列がEntryの幅よりも長い場合、justifyは何もせず、xviewを使用する必要があります。

私はWordやExcelが正当なテキストをどのように表示するのか、私は期待していましたが、TkinterがEntryウィジェットにテキストを表示する方法ではありません。

関連する問題