如何通过连接模块运行PyQt应用?

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

我想在Qt应用程序中运行连接服务器,但我不知道该怎么做。

[我已经尝试过类似下面的操作,但是执行卡在“连接循环”中,并且按钮“关闭服务器”在控制台中不会显示单元i ctrl-c连接服务器...:

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_()
python pyqt pyqt5 connexion
1个回答
0
投票

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(QApplication.quit)
        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_())
© www.soinside.com 2019 - 2024. All rights reserved.