在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_())
问题在于,wait方法通过冻结GUI来阻止Qt事件循环。可能的解决方案是在另一个线程中运行它:
import threading
# ...
def execute_thread():
threading.Thread(target=prog, daemon=True).start()
def menu():
mui.configButton.clicked.connect(execute_thread)
# ...