yy499121268 2022-06-06 16:04 采纳率: 100%
浏览 59
已结题

用Python3+PyQt5编写程序绑定信号出错

用Python3+PyQt5编写程序时,给按钮绑定自己写的函数时,函数中的一部分代码报错详细请参考下面代码:

import sys
import threading
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QHBoxLayout, QWidget
import conn_com
from configparser import ConfigParser

class MainWind(QMainWindow):
    def __init__(self,parent=None):
        super(MainWind,self).__init__(parent)
        self.setWindowTitle("Test")
        self.resize(714, 443)
        self.button1=QPushButton("Test")
        self.button1.clicked.connect(self.on_Click)
        layout = QHBoxLayout()
        layout.addWidget(self.button1)
        mainFrame = QWidget()
        mainFrame.setLayout(layout)
        self.setCentralWidget(mainFrame)

    def con_port(self):
        conn_com.Communication.__name__("/dev/ttys0", 115200, timeout=0.5)
        conn_com.Communication.Open_Port()
        conn_com.Communication.Print_Port()

    def Open_led(self):
        conf = ConfigParser()
        conf.read('settings/port_date.ini')
        opd = conf['date']['openLED']
        print(opd)
        return opd
        # conn_com.Communication.Send_data(opd)

    def on_Click(self,conf):
        self.sender()
        if __name__ == '__main__':
            conf
        print("sss")
        t3 = threading.Thread(target=self.Open_led, args=('t3',))
        t3.start()
        MainWind.instance()

if __name__=='__main__':
    app=QApplication(sys.argv)
    main=MainWind()
    main.show()
    sys.exit(app.exec_())


报错结果如下:

E:\Python_test\AutoTest_Tools\Scripts\python.exe "D:\Program Files\JetBrains\PyCharm Community Edition 2020.3.2\plugins\python-ce\helpers\pydev\pydevd.py" --multiproc --qt-support=auto --client 127.0.0.1 --port 59444 --file E:/AutoTest_Tools/qt/QWind.py
Connected to pydev debugger (build 211.7628.24)
sss
python-BaseException
python-BaseException
Traceback (most recent call last):
  File "D:\Python\lib\threading.py", line 865, in run
Traceback (most recent call last):
  File "E:/AutoTest_Tools/qt/QWind.py", line 40, in on_Click
    MainWind.instance()
AttributeError: type object 'MainWind' has no attribute 'instance'
    self._target(*self._args, **self._kwargs)
TypeError: Open_led() takes 1 positional argument but 2 were given


我以为是线程冲突的问题,开了一个新线程,但好像也不行。

正确的结果是触发按钮后,控制台会打印出从ini文件中读出来的内容才对,但现在没有,只有Print打印出来的三个S,能帮忙看看问题出在哪了,谢谢!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 6月14日
    • 创建了问题 6月6日

    悬赏问题

    • ¥15 用stata实现聚类的代码
    • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
    • ¥170 如图所示配置eNSP
    • ¥20 docker里部署springboot项目,访问不到扬声器
    • ¥15 netty整合springboot之后自动重连失效
    • ¥15 悬赏!微信开发者工具报错,求帮改
    • ¥20 wireshark抓不到vlan
    • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
    • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
    • ¥15 stata安慰剂检验作图但是真实值不出现在图上