带打印扩展名的打印命令

2024-09-29 00:19:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我用tkinter制作了一个Python(3)GUI程序,并使用重定向函数将所有打印语句定向到GUI滚动文本框中。在

这是重定向函数(与tkinter窗口在同一类中):

def redirector(self,inputStr):
    self.txt.insert(tk.INSERT, inputStr)
    self.txt.update()
    self.txt.see(tk.END)

当我想开始重定向输出时,我添加了这一行:

^{pr2}$

但是当我将文件重命名为.pyw时,文本框中没有显示任何内容。请建议一种方法来正确地将文本定向到GUI窗口。在


Tags: 函数self程序txttkinterdefgui语句
1条回答
网友
1楼 · 发布于 2024-09-29 00:19:29

print调用不起作用的原因是,在Windows上运行.pyw文件时,运行程序的可执行文件实际上是pythonw.exe,它通过调用WinMain()在内部初始化应用程序,因此不会创建控制台。没有控制台意味着没有标准IO流,因此sys.stdout是未定义的。在

相反,我建议您将tk.Text子类,并将write()flush()函数定义为实例方法。然后,您只需将sys.stdout设置为子类实例,一切都会正常工作。在

import sys
import tkinter as tk


class TextOut(tk.Text):

    def write(self, s):
        self.insert(tk.CURRENT, s)

    def flush(self):
        pass


if __name__ == '__main__':
    root = tk.Tk()
    text = TextOut(root)
    sys.stdout = text
    text.pack(expand=True, fill=tk.BOTH)
    root.mainloop()

相关问题 更多 >