将标准输出(打印)命令打印到扩展名为.pyw的tkinter窗口

尼基尔·拉玛克里希南(Nikhil Ramakrishnan)

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

这是重定向功能(与tkinter窗口位于同一类中):

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

然后,当我要开始重定向输出时,添加以下行:

sys.stdout.write = self.redirector

但是,当我将文件重命名为.pyw时,文本框中什么也没有显示。请提出一种将文本正确定向到GUI窗口的方法。

bzrr

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

相反,我建议您子类化tk.Text并将write()andflush()函数定义为实例方法。然后,您所要做的只是将其设置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()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用-ldflags -H = windowsgui编译golang应用程序时,将输出打印到命令窗口

来自分类Dev

如何在Vim中将命令输出打印到新窗口

来自分类Dev

何时将def打印到tkinter窗口中?

来自分类Dev

VS不打印到输出窗口

来自分类Dev

重击:CTRL + A将^ A打印到标准输出

来自分类Dev

名为 SignalFx 的 Python 包,如何让 _logger 打印到标准输出

来自分类Dev

为什么此“ at”命令不能打印到标准输出?

来自分类Dev

为什么此“ at”命令不能打印到标准输出?

来自分类Dev

将列表打印到Tkinter文本小部件

来自分类Dev

将列表打印到Tkinter文本小部件

来自分类Dev

Tkinter输出显示在Tkinter窗口外部

来自分类Dev

使用Python 3将LF打印到Windows标准输出

来自分类Dev

将文件名打印到标准输出

来自分类Dev

如何将信息级别打印到标准输出?

来自分类Dev

如何将 slurm 变量打印到标准 slurm 输出?

来自分类Dev

如何将 tkinter 的文本小部件的文本发送或打印到打印机?

来自分类Dev

将输出打印到Excel

来自分类Dev

nohup命令无法将输出打印到nohup.out

来自分类Dev

压缩文件并打印到标准输出

来自分类Dev

有没有一种方法可以防止Visual Studio将线程退出的语句打印到“输出窗口”中?

来自分类Dev

打开文件,打印到标准输出,追加到文件,然后再次打印到标准输出

来自分类Dev

C低级标准输入接受文件名,然后将文件内容打印到标准输出

来自分类Dev

将变量值打印/输出到立即窗口

来自分类Dev

Tkinter窗口字体在拉伸窗口时动态扩展

来自分类Dev

使用Tkinter命令“ iconbitmap”设置窗口图标

来自分类Dev

无法将非英文文本打印到控制台窗口

来自分类Dev

Foxpro将SELECT结果直接打印到屏幕中,而不是打开查询结果窗口?

来自分类Dev

使用F#+ Canopy将HTML标题打印到控制台窗口

来自分类Dev

Foxpro将SELECT结果直接打印到屏幕中,而不是打开查询结果窗口?

Related 相关文章

  1. 1

    使用-ldflags -H = windowsgui编译golang应用程序时,将输出打印到命令窗口

  2. 2

    如何在Vim中将命令输出打印到新窗口

  3. 3

    何时将def打印到tkinter窗口中?

  4. 4

    VS不打印到输出窗口

  5. 5

    重击:CTRL + A将^ A打印到标准输出

  6. 6

    名为 SignalFx 的 Python 包,如何让 _logger 打印到标准输出

  7. 7

    为什么此“ at”命令不能打印到标准输出?

  8. 8

    为什么此“ at”命令不能打印到标准输出?

  9. 9

    将列表打印到Tkinter文本小部件

  10. 10

    将列表打印到Tkinter文本小部件

  11. 11

    Tkinter输出显示在Tkinter窗口外部

  12. 12

    使用Python 3将LF打印到Windows标准输出

  13. 13

    将文件名打印到标准输出

  14. 14

    如何将信息级别打印到标准输出?

  15. 15

    如何将 slurm 变量打印到标准 slurm 输出?

  16. 16

    如何将 tkinter 的文本小部件的文本发送或打印到打印机?

  17. 17

    将输出打印到Excel

  18. 18

    nohup命令无法将输出打印到nohup.out

  19. 19

    压缩文件并打印到标准输出

  20. 20

    有没有一种方法可以防止Visual Studio将线程退出的语句打印到“输出窗口”中?

  21. 21

    打开文件,打印到标准输出,追加到文件,然后再次打印到标准输出

  22. 22

    C低级标准输入接受文件名,然后将文件内容打印到标准输出

  23. 23

    将变量值打印/输出到立即窗口

  24. 24

    Tkinter窗口字体在拉伸窗口时动态扩展

  25. 25

    使用Tkinter命令“ iconbitmap”设置窗口图标

  26. 26

    无法将非英文文本打印到控制台窗口

  27. 27

    Foxpro将SELECT结果直接打印到屏幕中,而不是打开查询结果窗口?

  28. 28

    使用F#+ Canopy将HTML标题打印到控制台窗口

  29. 29

    Foxpro将SELECT结果直接打印到屏幕中,而不是打开查询结果窗口?

热门标签

归档