#やりたいこと
以下手順で画面操作したい
1:メッセージboxダイアログのOKを押す
2:デスクトップ画面に切り替わる
3:2sec待機
4:デスクトップ画面に切り替わりましたメッセージ表示
#現状
しかし、以下コードを実行したところ、どうしても
デスクトップ画面に切り替わるタイミングが最後になってしまいます。
1:メッセージboxダイアログのOKを押す
2:2sec待機
3:デスクトップ画面に切り替わりましたメッセージ表示
4:デスクトップ画面に切り替わる
そのときのコードです。QMainWindowが動いているのと競合してそうなのはわかっているのですが、
対処方法がわからない状態です。
python
1# -*- coding: utf-8 -*- 2 3import sys #システムモジュール 4from PyQt5 import QtWidgets,QtCore 5from PyQt5.QtWidgets import QMainWindow 6from PyQt5.QtWidgets import QMessageBox 7from AK003_V1001ui_test import Ui_MainWindow 8import time #タイムアウト用に必要 9import threading 10import pyautogui as pg #全てのwindowを閉じるよう 11 12class AK003(QMainWindow, Ui_MainWindow): 13 def __init__(self,parent=None): 14 super(AK003, self).__init__(parent) 15 self.ui = Ui_MainWindow() 16 self.ui.setupUi(self) 17 18 19 #note 20 def click_execute(self): 21 msg_ret = QMessageBox.question(None,"確認","デスクトップ画面を表示しますがよろしいですか?", QMessageBox.Ok,QMessageBox.Cancel ) 22 if(msg_ret != QMessageBox.Cancel ): 23 pg.hotkey('win','d') 24 time.sleep(2) 25 QMessageBox.information(None, "情報","デスクトップ画面を表示してから2sec後にこの画面が表示されているはず") 26 else: 27 pass 28 29#メイン関数 30if __name__ == '__main__': 31 app = QtWidgets.QApplication(sys.argv) 32 window = AK003() 33 window.show() 34 sys.exit(app.exec_()) 35
python
1# -*- coding: utf-8 -*- 2 3# Form implementation generated from reading ui file 'AK003_V1001ui_test.ui' 4# 5# Created by: PyQt5 UI code generator 5.9.2 6# 7# WARNING! All changes made in this file will be lost! 8 9from PyQt5 import QtCore, QtGui, QtWidgets 10 11class Ui_MainWindow(object): 12 def setupUi(self, MainWindow): 13 MainWindow.setObjectName("MainWindow") 14 MainWindow.resize(227, 142) 15 self.centralwidget = QtWidgets.QWidget(MainWindow) 16 self.centralwidget.setObjectName("centralwidget") 17 self.pushButton__execute = QtWidgets.QPushButton(self.centralwidget) 18 self.pushButton__execute.setGeometry(QtCore.QRect(50, 60, 111, 23)) 19 font = QtGui.QFont() 20 font.setFamily("Segoe UI") 21 self.pushButton__execute.setFont(font) 22 self.pushButton__execute.setObjectName("pushButton__execute") 23 MainWindow.setCentralWidget(self.centralwidget) 24 self.menubar = QtWidgets.QMenuBar(MainWindow) 25 self.menubar.setGeometry(QtCore.QRect(0, 0, 227, 21)) 26 self.menubar.setObjectName("menubar") 27 MainWindow.setMenuBar(self.menubar) 28 self.statusbar = QtWidgets.QStatusBar(MainWindow) 29 self.statusbar.setObjectName("statusbar") 30 MainWindow.setStatusBar(self.statusbar) 31 32 self.retranslateUi(MainWindow) 33 self.pushButton__execute.clicked.connect(MainWindow.click_execute) 34 QtCore.QMetaObject.connectSlotsByName(MainWindow) 35 36 def retranslateUi(self, MainWindow): 37 _translate = QtCore.QCoreApplication.translate 38 MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 39 self.pushButton__execute.setText(_translate("MainWindow", "Execute")) 40 41
#問題
デスクトップ画面への切り替わり処理の優先度が下がっている
#試したこと
デスクトップ画面切り替えをthread化してみましたが、それでもうまくいきませんでした。
python
1 msg_ret = QMessageBox.question(None,"確認","デスクトップ画面を表示しますがよろしいですか?", QMessageBox.Ok,QMessageBox.Cancel ) 2 if(msg_ret != QMessageBox.Cancel ): 3 thread1 = threading.Thread(target=pg.hotkey('win','d')) 4 thread1.start() 5 thread1.join() 6 time.sleep(2) 7 QMessageBox.information(None, "情報","デスクトップ画面を表示してから2sec後にこの画面が表示されているはず") 8 else: 9 pass
#質問
本原因がわかるかたいらっしゃいましたらアドバイスいただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー