我正在使用ascii字符在(半)纯python中制作一个复古风格的GUI。该脚本的工作原理是打印并清除到控制台,同时使用用户的鼠标和键盘数据创建完全交互式的 GUI。
但是,在创建点击检测系统时,我注意到当用户与实际控制台窗口交互时(例如拖动控制台、单击控制台),Python 会冻结运行。当用户按任意键或右键单击时,冻结就会结束。
我试图通过运行一个单独的脚本来克服这个问题,在用户左键单击后立即按右键单击,以取消交互并解冻代码,但是这段代码永远不会运行,因为程序在运行之前被冻结。
我还尝试将此代码放入一个完全独立的文件中并单独运行它,但是当任何 python 控制台窗口打开时,这也会被冻结(即使单独的文件作为 pyw 运行)。
这是点击检测器:
def c_c():
global mouse_pos
last_cycle = False
cd = os.getcwd()
nw = "pyw " + cd + "\\misc_scripts\\click_activator.py"
os.system(nw)
while True:
state = ctypes.windll.user32.GetAsyncKeyState(0x01) # left click
pressed = (state & 0x8000 != 0)
if pressed:
onclick(mouse_pos)
另一个脚本包含一个类似的程序,该程序在使用
right_click()
功能可以在用户左键单击后立即右键单击,该功能在外部测试中完全可以运行,但是在使用主程序时却无法运行,这让我相信当用户与任何控制台交互时该脚本也会被冻结。
我正在寻找解决此问题的方法,或者使用户无法与主控制台交互,同时仍然能够单击它。
您是否尝试过在不同的线程中运行它?