PySide2:窗口没有响应

问题描述 投票:0回答:1

“问题”

在mouse.wait函数之前打开窗口时没有响应。如果将mouse.wait函数替换为另一个(不等待鼠标单击),则窗口将正常打开。

import pyautogui, sys, mouse
from PySide2 import QtWidgets
from design import Ui_Form, Ui_Next

def mpos(file):
    mouse.wait(button='right', target_types='down')
    x,y=pyautogui.position()
    file.write(str(x)+'_'+str(y)+'-')

def prog():
    with open('prog.txt', 'w') as file:
        next()
        mpos(file)
        next()
        mpos(file)
        next()
        mpos(file)

def menu():
    mui.configButton.clicked.connect(prog)
    wmenu.show()

def fclose():
    wnext.close()

def next():
    nui.okButton.clicked.connect(fclose)
    wnext.show()

app = QtWidgets.QApplication(sys.argv)

wmenu = QtWidgets.QFrame()
mui = Ui_Form()
mui.setupUi(wmenu)

wnext = QtWidgets.QFrame()
nui = Ui_Next()
nui.setupUi(wnext)

menu()
sys.exit(app.exec_())
python mouseevent pyside2 pyautogui python-3.8
1个回答
0
投票

问题在于,wait方法通过冻结GUI来阻止Qt事件循环。可能的解决方案是在另一个线程中运行它:

import threading

# ...

def execute_thread():
    threading.Thread(target=prog, daemon=True).start()

def menu():
    mui.configButton.clicked.connect(execute_thread)

# ...
© www.soinside.com 2019 - 2024. All rights reserved.