我想在Qt应用程序中运行连接服务器,但是我不知道该怎么做。
我已经尝试过类似下面的操作,但是执行卡在了“ connexion循环”中,按钮“关闭服务器”在控制台中不会显示单元i ctrl-c connexion服务器...:
import sys, os
import connexion
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QPushButton
connex_app = connexion.App("Hello World")
class OpennoteserverDlg(QPushButton):
def __init__(self, parent=None):
super().__init__(
"&Close Server", parent)
self.clicked.connect(self.close)
self.setWindowTitle("Opennote-server")
app = QApplication(sys.argv)
form = OpennoteserverDlg()
form.show()
app.connex_app = connex_app
app.connex_app.run()
app.exec_()
最佳答案
run()
方法正在阻止,因此它将不允许执行GUI事件循环,从而导致多个GUI任务无法正常工作。解决方案是在另一个线程中运行服务器
import signal
import sys
import threading
import connexion
from PyQt5.QtWidgets import QApplication, QPushButton
class OpennoteserverDlg(QPushButton):
def __init__(self, parent=None):
super().__init__("&Close Server", parent)
self.clicked.connect(self.close)
self.setWindowTitle("Opennote-server")
def run_server():
connex_app = connexion.App("Hello World")
connex_app.run()
if __name__ == "__main__":
signal.signal(signal.SIGINT, signal.SIG_DFL)
app = QApplication(sys.argv)
form = OpennoteserverDlg()
form.show()
threading.Thread(target=run_server, daemon=True).start()
sys.exit(app.exec_())
关于python - 如何使用Connexion模块运行PyQt应用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59276820/