NeetSonic 2023-12-18 14:48 采纳率: 50%
浏览 21

PyQt5的按钮点击响应函数中执行post失败

def send_text(text: str):
    data = {"msgtype": "text", "text": {"content": text}}
    # return requests.post(url=URL, headers={"Content-Type": "application/json"}, json=data)
    return httpx.post(url=URL, json=data, follow_redirects=True) 

以上一段平平无奇的一段post代码,URL是往企业微信群推送消息的机器人API,在_main_函数中调用可以正常执行无任何问题,在我创建的QWidget子类的_init_函数中调用也可以正常执行,但在按钮的点击事件响应函数中执行就报错(开启工作线程执行,仍然报错)

ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
httpcore.ConnectError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
httpx.ConnectError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

希望各位指点,
点击按钮消息绑定及响应代码如下

class Reporter(QWidget):
    def __init__(self):
        super(QWidget, self).__init__()
        self.btn = QPushButton('ss')
        self.btn.clicked.connect(self.on_button_clicked)
        <略>

    def on_button_clicked(self):
        send_text('测试')
        # threading.Thread(target=self.download_thread).start()

    def download_thread(self):
        send_text('测试')
  • 写回答

1条回答 默认 最新

  • 小孟多 2023-12-18 15:40
    关注

    这个问题很可能是因为在按钮点击事件响应函数中执行post请求时,还未建立起网络连接,导致连接被拒绝。为了解决这个问题,你可以在请求前先等待一段时间,以确保网络连接已经建立。

    具体来说,你可以在 on_button_clicked 方法中增加一个等待网络连接的步骤,例如:

    def on_button_clicked(self):
        # 等待网络连接
        while True:
            try:
                httpx.get('https://www.baidu.com')
                break
            except httpx.RequestError:
                time.sleep(1)  # 等待1秒后重试
    
        # 发送消息
        send_text('测试')
    
    
    

    在以上代码中,我们使用了一个简单的方法等待网络连接,即不断尝试访问一个可靠的网站(例如百度),如果请求成功则表示网络连接已经建立,否则等待一段时间后重试。这个等待时间可以根据实际情况进行调整,以确保网络连接已经稳定建立。

    评论

报告相同问题?

问题事件

  • 修改了问题 12月18日
  • 修改了问题 12月18日
  • 修改了问题 12月18日
  • 创建了问题 12月18日

悬赏问题

  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响
  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?