2017-01-27 7 views
1

tkinterのアプリは、python3にテキストを挿入するテキストウィジェットがあります。私は苦労維持を抱えているPython3 Tkinter Textウィジェット同じ行のINSERT

from tkinter import * 

class App : 

    def __init__(self): 
     sys.stdout.write = self.print_redirect 

     self.root = Tk() 
     self.root.geometry("900x600") 

     self.mainframe = Text(self.root, bg='black', fg='white') 
     self.mainframe.grid(column=0, row=0, sticky=(N,W,E,S)) 
     # Set the frame background, font color, and size of the text window 
     self.mainframe.grid(column=0, row=0, sticky=(N,W,E,S)) 

     print('Hello: ') 

     print('World!') 

    def print_redirect(self, inputStr): 
     # add the text to the window widget 
     self.mainframe.insert(END, inputStr, None) 
     # automtically scroll to the end of the mainframe window 
     self.mainframe.see(END) 


a = App() 
a.root.mainloop() 

私はHello: World!のように見えるように、メインフレームのテキストウィジェットでの結果の挿入をしたいと思います:私はそうのように、以前のインサートと同じ行に挿入されたテキストを追加したいと思いますただし、同じ行にテキストを挿入しました。挿入するたびに、新しい行が生成されます。

mainframe.insert入力文字列を改行なしで同じ行に保存するにはどうすればよいですか?

+0

'' end-1c "' 'ではなく、' 'END''の位置に挿入してみてください。 – jasonharper

+0

このコードは実行できません。 _actual_、_working_コードを投稿してください。実際に実行するようにコードを編集した場合、望みのように「Hello:World!」というテキストウィジェットが作成されます。 –

+0

@jasonharper:これは必須ではありません。 '' end "'や 'END'はこの場合完全に受け入れられます。 –

答えて

5

問題はではなく、最後に'\n'を追加するprint()ではありませんが、自然です。

あなたは直接'\n'

print('Hello: ', end='') 

または

sys.stdout.write('Hello: ') 

なしかinsert()使用中のテキストを印刷するend=""を使用することができます

inputStr.strip('\n') 

しかし、'\n'が必要な場合でも、すべて'\n'が削除されます。

print('Hello:\n\n\n') 

最後に'\n'を削除する必要があるかどうかはわかりません。

+0

これは私が必要としていたものです!私はすでにそれをテストして、それが私の問題を解決する。私と一緒に働いてくれてありがとう。 – sadmicrowave

+1

ところで、あなたは 'print()'の代わりに 'sys.stdout.write()'を使うこともできます。そして ''\ n' 'に問題がなく、コンマ。 – furas

関連する問題