![](/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.