簡體   English   中英

Python3 Tkinter文本小部件在同一行上插入

[英]Python3 Tkinter Text Widget INSERT on same line

我在python3有一個tkinter應用程序,帶有將文本插入其中的Text小部件。 我想將插入的文本追加到上一次插入的同一行上,如下所示:

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輸入字符串保持在同一行而沒有換行符?

問題不是insert()而是print()總是在末尾添加'\\n' -這很自然。

您可以使用end=""打印不帶'\\n'文本

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

或直接

sys.stdout.write( 'Hello: ' )

或在insert()使用

inputStr.strip('\n')

但是它將刪除所有的'\\n'即使您需要'\\n'即。

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

您將永遠不知道是否必須刪除最后一個'\\n'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM