我设法将一个程序组合在一起,该程序将多行字符串打印到透明背景上。我想知道是否有办法为字符串的各个部分着色不同的颜色。我知道有,但我对 win32 缺乏了解真的妨碍了我。我是否需要将文本分成两部分并调用 drawText() 或者我可以在字符串中途更改文本颜色吗?任何指向信息或解决方案的观点都会很棒。
示例: string = "用户名:用户发送的一些消息。"
我在 Stack 和其他多个网站上搜索过,但到目前为止还没有任何乐趣。我通常不会,但我已经转储了代码,因为它可以运行,你可以明白我的意思。
对于缺乏评论和代码状态,我提前道歉。
import win32api
import win32con
import win32gui
import time
import threading
from collections import deque
userAndMessage = deque()
def queue(message):
userAndMessage.append(message)
def getQueue():
return userAndMessage;
def dequeue():
return userAndMessage.popleft()
def cleanMessage(message):
return message.split("\r\n")[0]
def showMessages():
return userAndMessage[0] + "\n" + userAndMessage[1] + "\n" +
userAndMessage[2] + "\n" + userAndMessage[3] + "\n" + userAndMessage[4]
#Code example modified from:
#Christophe Keller
#Hello World in Python using Win32
windowText = ''
def main():
#get instance handle
hInstance = win32api.GetModuleHandle()
# the class name
className = 'SimpleWin32'
# create and initialize window class
wndClass = win32gui.WNDCLASS()
wndClass.style = win32con.CS_HREDRAW | win32con.CS_VREDRAW
wndClass.lpfnWndProc = wndProc
wndClass.hInstance = hInstance
wndClass.hCursor = win32gui.LoadCursor(None, win32con.IDC_ARROW)
wndClass.hbrBackground = win32gui.GetStockObject(win32con.WHITE_BRUSH)
wndClass.lpszClassName = className
# register window class
wndClassAtom = None
try:
wndClassAtom = win32gui.RegisterClass(wndClass)
except Exception as e:
print (e)
raise e
exStyle = win32con.WS_EX_COMPOSITED | win32con.WS_EX_LAYERED |
win32con.WS_EX_NOACTIVATE | win32con.WS_EX_TOPMOST |
win32con.WS_EX_TRANSPARENT
style = win32con.WS_DISABLED | win32con.WS_POPUP | win32con.WS_VISIBLE
可能有一些不合时宜的缩进,在程序中不是这种情况,只是我必须在每行文本上按空格键 4 次。
茅侃侃
相关分类