как сделать так, чтобы программа на python светилась, которая написана для печати текста на экране прямо без окна? - PullRequest
0 голосов
/ 15 сентября 2018

В последние несколько дней я работал над программой, одной из частей которой является отображение текста непосредственно на экране окна, а также обновление / изменение его в соответствии с требованиями. Я завершил эту часть с модулем Tkinter в Python.

Проблема в том, что когда я запускаю программу, она ведет себя как тяжелая программа, из-за которой другие процессы замедляются. Также, если я попытался выполнить какой-то другой процесс параллельно, фон текста становится черным, что совершенно нежелательно. , как показано на рисунке

Я также хочу показать некоторые динамические символы, такие как загрузка, но использование двух виджетов 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. Поэтому он становится более легким и модульным. и зависимость будет меньше.

1 Ответ

0 голосов
/ 15 сентября 2018

Вот код, который делает ваш код отзывчивым, а также не использует ваш процессор слишком часто.

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 памяти и без процессора:

enter image description here

...