簡體   English   中英

如何在一段時間后顯示、隱藏和顯示 tkinter canvas?

[英]How do I show, hide and show tkinter canvas after a period of time?

我正在嘗試顯示和隱藏並顯示 canvas。 canvas 甚至在我運行程序時都沒有出現,並且似乎卡在了一個循環中。

import tkinter as tk
import time
    

class Test():
    def __init__(self):
       self.root = tk.Tk()
       self.canvas = tk.Canvas(self.root, bg="black", width=550, height=820)

    def main(self):
        time.sleep(2)
        self.canvas.pack()
        time.sleep(2)
        self.canvas.pack_forget()
        time.sleep(2)
        self.canvas.pack()
        self.root.mainloop()
        

a = Test()
a.main()

我在這里看到了一些問題

  1. 您應該在__init__ function 中使用 mainloop 方法
  2. 您應該更新您的元素( .update() )以使其工作
  3. 你根本無法發生這樣的事件
  4. 不要使用sleep function 使用.after方法在 tkinter 中稍好一些

我已將您的代碼修改為以下內容:

import tkinter as tk

class Test():
    def __init__(self):
       self.root = tk.Tk()
       self.canvas = tk.Canvas(self.root, bg='black', width=550, height=820)
       self.btn = tk.Button(self.root,text='main func',command=self.main)
       self.btn.pack()
       self.root.mainloop()

    def main(self):
        self.root.after(2000)
        self.canvas.pack()
        self.canvas.update()
        self.root.after(2000)
        self.canvas.pack_forget()
        self.canvas.update()
        self.root.after(2000)
        self.canvas.pack()
        self.canvas.update()        

a = Test()

如您所見,我添加了一個按鈕來為我發生事件。 嘗試在您的程序中找到可能發生事件的時刻。 例如:我點擊按鈕生成一些字符串。 它也運行主要功能。

我希望我對你有足夠的幫助

暫無
暫無

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

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