Skip to main content
 首页 » 编程设计

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

2025年05月04日24soundcode

我在 python3 中有一个 tkinter 应用程序,其中包含一个文本小部件,我可以将文本插入其中。我想将插入的文本追加到与前一个插入相同的行中,如下所示:

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'。