Python3 Tkinter Text Widget INSERT在同一行

时间:2017-01-27 01:44:37

标签: python python-3.x tkinter text-widget

我在void printArrayPointer(const int arr[], int n){ for (const int *i = arr; i < arr + n; i++) { cout << *i << ' '; } } 中有一个tkinter应用,其中包含我插入文本的文本小部件。我想在与前一个插入相同的行上添加插入的文本,如下所示:

python3

我希望大型机文本小部件中的结果插件看起来像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() 但是我很难将插入的文本保持在同一行。每次插入时,都会生成一个新行。

如何将mainframe.insert输入字符串保留在同一行而不换行?

1 个答案:

答案 0 :(得分:5)

问题不是insert(),而是print()总是在最后添加'\n' - 但这很自然。

您可以使用end=""打印不带'\n'

的文字
print( 'Hello: ', end='' ) 

或直接

sys.stdout.write( 'Hello: ' )

insert()使用

inputStr.strip('\n')

但它会删除所有'\n' - 即使您需要'\n'

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

您永远不会知道是否必须删除上一个'\n'