Python 特金特';函数的作用是截断标签的第一个字母
上面发生的事情的图像: 第二个输出是实际的预期结果。两者放置相同,但使用不同的函数进行处理 第一个(问题)的位置如下:Python 特金特';函数的作用是截断标签的第一个字母,python,user-interface,tkinter,Python,User Interface,Tkinter,上面发生的事情的图像: 第二个输出是实际的预期结果。两者放置相同,但使用不同的函数进行处理 第一个(问题)的位置如下: gui=gui(Tk()) 类ModifiedPrint: 定义初始化(自): self.old=sys.stdout def写入(自身、文本): sys.stdout=self.old 标签(gui.root,text=text,fg='white',bg='black').place(x=0,y=gui.Space-30) sys.stdout=self def冲洗(自)
gui=gui(Tk())
类ModifiedPrint:
定义初始化(自):
self.old=sys.stdout
def写入(自身、文本):
sys.stdout=self.old
标签(gui.root,text=text,fg='white',bg='black').place(x=0,y=gui.Space-30)
sys.stdout=self
def冲洗(自):
self.old.flush()
sys.stdout=ModifiedPrint()
gui.root.mainloop()
而第二个标签(self.root,text=eval(cmd),fg='white',bg='black').place(x=x,y=y)
从我的研究来看,这不是一个价值问题,而是一个其他的问题。我试着把它放在很远的地方,但它仍然被切断。除了添加空格(如“”+文本)不会改变任何内容外,h(第一个字母)仍然被截断
整个代码:函数被调用两次,第二次总是“\n” 这是输入print hello后发生的情况:
['h','e','l','l','o']
['\n']
我通过检查函数是第一次调用还是第二次调用来修复它
class ModifiedPrint:
定义初始化(自):
self.runs=0
self.old=sys.stdout
def写入(自身、文本):
self.runs+=1
如果self.runs%2==0:返回
self.runs=1
标签(gui.root,text=text,fg='white',bg='black').place(x=0,y=gui.Space-30)
def冲洗(自):
self.old.flush()
而不是.place
使用.pack
会更容易。请阅读place
命令中的anchor
选项。虽然place
可能不是这里的正确选择。与其让self.runs
作为int
运行,bool
不是更好吗?您可以使用self.runs=not self.runs