Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何制作python';s内置的打印功能,在gui上制作标签(我正在制作REPL),而不是打印到控制台?_Python_User Interface_Tkinter_Read Eval Print Loop - Fatal编程技术网

如何制作python';s内置的打印功能,在gui上制作标签(我正在制作REPL),而不是打印到控制台?

如何制作python';s内置的打印功能,在gui上制作标签(我正在制作REPL),而不是打印到控制台?,python,user-interface,tkinter,read-eval-print-loop,Python,User Interface,Tkinter,Read Eval Print Loop,标题说明了一切,这就是我目前拥有的(赤裸裸的开始)。我将覆盖所有的sys.std\uuu函数,这样我就不必手动覆盖诸如打印、输入。。。我不确定如何实际放置标签,因为我没有Gui类所需的属性 class ModifiedPrint: 定义初始化(自): self.old=sys.stdout def写入(自身、文本): sys.stdout=self.old 打印(文本)#只是一个开始 sys.stdout=self def冲洗(自): self.old.flush() sys.stdout=Mo

标题说明了一切,这就是我目前拥有的(赤裸裸的开始)。我将覆盖所有的
sys.std\uuu
函数,这样我就不必手动覆盖诸如打印、输入。。。我不确定如何实际放置标签,因为我没有Gui类所需的属性

class ModifiedPrint:
定义初始化(自):
self.old=sys.stdout
def写入(自身、文本):
sys.stdout=self.old
打印(文本)#只是一个开始
sys.stdout=self
def冲洗(自):
self.old.flush()
sys.stdout=ModifiedPrint()
整个代码:(包括提到的Gui类)

请看以下代码:

将tkinter作为tk导入
导入系统
类GUI打印:
def_uuuinit_uuu(self,text_小部件:tk.text):
self.old\u stdout=sys.stdout
self.text=text\u小部件
def写入(自身,数据:str):
#在文本小部件中插入文本
self.text.insert(“结束”,数据)
定义输入(自我):
#输入'with'语句
sys.stdout=self
回归自我
定义退出(自我,*args):
#退出'with'语句
sys.stdout=self.old\u stdout
def函数():
打印(“你好世界”)
root=tk.tk()
text\u widget=tk.text(根)
text_widget.pack()
gui\u printer=GUIPrint(文本小部件)
打印(“正常标准输出”)
使用gui_打印机:
打印(“在GUI内部”)
函数()
打印(“正常标准输出”)
root.mainloop()
with
语句中的所有内容都将打印在文本小部件中。始终保持
sys.stdout
不是一个好主意,因此当
with
语句退出时,我会释放它


请注意,我使用了
tk.Text
而不是
tk.Label
s。这样做容易多了。

谢谢你的回答,如果我不知道
exec()
中的代码是否是打印语句,我该如何使用它?我可能在这里遗漏了一些东西,我几乎从不使用with关键字/语句(我会在一分钟内仔细阅读)。@ammarsys只是将所有可能/将要打印的代码放在
with
语句中。我用一个更好的例子更新了我的代码。即使您在
exec
语句中使用
print
函数/另一个函数,只要它在
with
语句中,它仍然会在GUI上打印。