【发布时间】:2016-02-08 22:49:31
【问题描述】:
我想在 Python / Tkinter 中创建一个简单、可重用的文本输出窗口类,其功能与控制台输出类似,但窗口更好。
到目前为止,我设法直接从构造函数中将文本写入ScrolledText 小部件,但这不是我想要的。
我想创建一个print 或println 方法,让我可以随时从主过程中添加文本。
如何从 print 方法中“调用”文本小部件?
我的主要程序:
from gui.simpleio import Textwindow
a = Textwindow("This is my Textwindow !")
a.print("I'd like to see a hello from the print method")
a.stxt.INSERT("but nothing happens")
我在 gui 包中的 Textwindow 类 (simpleio.py):
from tkinter import Tk, Frame, INSERT
from tkinter import scrolledtext
class Textwindow(Frame):
def __init__(self , title):
root = Tk()
stxt = scrolledtext.ScrolledText(root)
stxt.pack()
root.wm_title(title)
stxt.insert(INSERT,"blah\nblabla\n")
stxt.insert(INSERT,"yes\nno")
root.mainloop()
def print(self,text):
#self.stxt.insert(INSERT,text)
pass
【问题讨论】:
-
请不要用粗体表示所有内容,仅用于重要的事情。
-
Textwindow.print()不起作用,因为self.stxt未在Textwindow.__init__()中定义。 -
另外,
TextWindow的__init__方法会调用root.mainloop(),因此在主窗口被销毁之前不会执行以下a.print调用。 -
看看my answer中的
errorwindow.py模块到问题Writing to easygui textbox as function is running。
标签: python user-interface oop methods tkinter