从最近几天开始,我一直致力于一个程序,其中一部分是直接在窗口屏幕上显示文本,并根据需要更新/更改它们。我已经用python中的Tkinter模块完成了这部分。
问题是每当我运行程序时,它的行为就像一个繁重的程序,因为其他进程变得很慢。另外,如果我尝试并行执行其他一些过程,文本的背景会变成黑色,这是绝对不可取的.as the shown in image
我还想显示一些动态符号,比如加载但是使用两个Tkinter小部件会让它变慢。如果可能的话,请使它更模块化和轻便。
from tkinter import *
import win32api, win32con, pywintypes
from time import sleep
f=Tk()
var = StringVar()
var.set(' ')
f =Label(textvariable = var, font=('Cooper','60'), fg='blue', bg='white')
f.master.overrideredirect(True)
f.master.geometry("+900+200")
f.master.lift()
f.master.wm_attributes("-topmost", True)
f.master.wm_attributes("-disabled", True)
f.master.wm_attributes("-transparentcolor", "white")
f.pack()
for i in range(10):
sleep(5) # Need this to slow the changes down
var.set(u'[ A ]' if i%2 else u'[ B ]')
f.update_idletasks()
另外,我想问一下,如果不使用Tkinter模块,我们可以做到这一点。因此它变得更加轻巧和模块化。和依赖会少。
这是一个代码,它使您的代码响应,也不会太多使用您的CPU。
from tkinter import *
import win32api, win32con, pywintypes
import time
f=Tk()
var = StringVar()
var.set(' ')
f =Label(textvariable = var, font=('Cooper','60'), fg='blue', bg='white',bd=0)
f.master.overrideredirect(True)
f.master.geometry("+900+200")
f.master.lift()
f.master.wm_attributes("-topmost", True)
f.master.wm_attributes("-disabled", True)
f.master.wm_attributes("-transparentcolor", "white")
f.pack()
for i in range(10):
f.update()
t = time.time()
while time.time() - t < 5:
f.update()
var.set(u'[ A ]' if i%2 else u'[ B ]')
f.update_idletasks()
f.update()
这是任务管理器的图像。它只采取15 MB
内存,没有CPU: