簡體   English   中英

更新 Tkinter Canvas 中的多個 create_text 對象

[英]Updating multiple create_text objects in Tkinter Canvas

我想不斷更新時間 output 覆蓋在具有背景的 canvas 上。 當文本位於 label 上時,我可以這樣做,但是 label 不允許我添加多個文本對象而不在文本周圍創建背景。 我可以添加一個 static 時間,但是一旦我嘗試創建一個 function 來簡單地創建一個文本,我似乎得到了一個錯誤

所以這段代碼工作正常:

timenow = time.strftime('%H:%M:%S')

root = Tk()
c = Canvas(root, width = 500, height = 333)
c.pack()
image = PhotoImage(file = 'C:/Users/Khalid Byra/Desktop/Python Alarm Clock Project/wallpaper.gif')
c.create_image(0, 0, image=image, anchor=NW)
c.create_text(250, 166.5, text = timenow, font=('Arial', 24), fill = 'white', anchor = CENTER)

但是,當我嘗試將其更改為這樣的方法時:

c.create_image(0, 0, image=image, anchor=NW)
def write(x=250, y=166.5, text=timenow, font=('Arial', 24), fill='white', anchor=CENTER):
    c.create_text(x, y, text, fill, anchor, text)
write()

我收到以下錯誤:

*(args + self._options(cnf, kw))))

_tkinter.TclError:未知選項“22:27:34”

好吧,沒關系,我想通了,應該這樣做:

def write(x=250, y=166.5, text=timenow, font=('Arial', 32), fill='white', anchor=CENTER): c.create_text(x, y, text=text, fill=填充,錨=錨)

我的下一個問題是我正在使用這種方法來更新時鍾:

def tick():
    global timenow
    time2 = time.strftime('%H:%M:%S')
    if time2 != timenow:
        timenow = time2
        write(text = time2)
    c.after(200, tick)

tick()

但這里的問題是它把新文本放在舊文本上,使它變得一團糟。 所以現在我需要弄清楚在新文本出現時刪除舊文本? 但它沒有分配給變量,所以我不確定如何

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM