![](/img/trans.png)
[英]How can I italicize the resulting text from an Entry widget in tkinter?
[英]how can I clear text from a Text widget on Tkinter?
所以我在Tkinter上做了一个状态栏,我想在那里显示一些值。 有时该值会更改,因此我需要状态栏更改为。 当我运行我的程序时,该值显示就很好,但是当我更改该值并插入它时,旧的值会保留,而新的值会打印在旧的值旁边。
我的问题是如何首先删除第一个,然后添加另一个?
from tkinter import *
class lol:
def __init__(self, window):
frame = Frame(window)
frame.grid()
self.statusbarTotal = Text(window, width= 8, height= 1, bd=1, relief= SUNKEN)
self.statusbarTotal.grid(row=13, column=0, sticky=W)
self.presetButton1 = Button(window, text=" 10 ", command=self.preset10)
self.presetButton1.grid(row=2, column=0)
self.presetButton2 = Button(window, text=" 30 ", command=self.preset30)
self.presetButton2.grid(row=2, column=1)
def preset10(self):
global waitingTime
waitingTime = 600
self.statusbarTotal.insert(13.0, int(waitingTime/60))
print(waitingTime)
def preset30(self):
global waitingTime
waitingTime = 1800
self.statusbarTotal.insert(13.0, int(waitingTime/60))
print(waitingTime)
tk = Tk()
b = lol(tk)
tk.mainloop()
除了缩进问题。 您需要更改:
def preset10(self):
global waitingTime
waitingTime = 600
self.statusbarTotal.insert(13.0, int(waitingTime/60))
print(waitingTime)
def preset30(self):
global waitingTime
waitingTime = 1800
self.statusbarTotal.insert(13.0, int(waitingTime/60))
print(waitingTime)
至:
def preset10(self):
global waitingTime
waitingTime = 600
self.statusbarTotal.delete(1.0, END)
self.statusbarTotal.insert(13.0, int(waitingTime/60))
print(waitingTime)
def preset30(self):
global waitingTime
waitingTime = 1800
self.statusbarTotal.delete(1.0, END)
self.statusbarTotal.insert(13.0, int(waitingTime/60))
print(waitingTime)
但是,您的程序将所有数据显示在一行上,因此我不确定为什么要在文本框的第13行上插入值。 如果可以提供上下文或更好的示例,我可以提供更好的答案。
但是,您应该真正摆脱global
变量,因为这被认为是不好的编程方法。
相反,您的代码应使用类属性。 像这样:
from tkinter import *
class lol:
def __init__(self, window):
frame = Frame(window)
frame.grid()
# uss self. to make a variable name a class attribute
self.waitingTime = 0
self.statusbarTotal = Text(window, width= 8, height= 1, bd=1, relief= SUNKEN)
self.statusbarTotal.grid(row=13, column=0, sticky=W)
self.presetButton1 = Button(window, text=" 10 ", command=self.preset10)
self.presetButton1.grid(row=2, column=0)
self.presetButton2 = Button(window, text=" 30 ", command=self.preset30)
self.presetButton2.grid(row=2, column=1)
def preset10(self):
self.waitingTime = 600
self.statusbarTotal.delete(1.0, END)
self.statusbarTotal.insert(13.0, int(self.waitingTime/60))
print(self.waitingTime)
def preset30(self):
self.waitingTime = 1800
self.statusbarTotal.delete(1.0, END)
self.statusbarTotal.insert(13.0, int(self.waitingTime/60))
print(self.waitingTime)
tk = Tk()
b = lol(tk)
tk.mainloop()
几种可能性。
第一个是insert
会很好地将新文本插入到现有文本中。 因此,您必须使用delete
删除不再需要的部分。
我认为更简单的另一种解决方案是不使用Text
小部件,而使用Label
,它允许您设置和替换一次显示的所有text
。 您不能在Label小部件中手动编辑文本,但是我想使用的状态栏不是您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.