gpt4 book ai didi

python - 如何使用连接模块运行 PyQt 应用程序?

转载 作者:太空宇宙 更新时间:2023-11-03 20:00:20 30 4
gpt4 key购买 nike

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

我已经尝试过类似下面的内容,但是执行陷入了“连接循环”,并且按钮“关闭服务器”不会在控制台中显示我的 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_()

最佳答案

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 - 如何使用连接模块运行 PyQt 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59276820/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com