想点击读取按钮实现读取坐标,单独运行read()能直接读取,点击按钮报错,信号和槽怎么连接?


from PyQt5.Qt import *

class  BLH_XYZwindow(QWidget):
    def __init__(self):
        super().__init__()
        # windowBLH__XYZ = QWidget()
        self.resize(600, 600)
        self.setWindowTitle("空间直角坐标转大地坐标")
        self.setup_UI()
        self.read()
        # self.btn()
    def btn(self):
        btn_read = QPushButton(self)
        btn_read.setText("读取")
        btn_read.move(200,250)
        self.btn_read=btn_read
        btn = QPushButton(self)
        self.btn=btn
        btn.setText("转换")
        self.btn.move(300, 250)
        # btn.clicked.connect()
    def setup_UI(self):
        btn_read=QPushButton(self)

        labelB = QLabel(self)
        labelL = QLabel(self)
        labelH = QLabel(self)

        labelX = QLabel(self)
        labelY = QLabel(self)
        labelZ = QLabel(self)
        self.labelB=labelB
        self.labelL=labelL
        self.labelH=labelH
        self.labelX=labelX
        self.labelY=labelY
        self.labelZ=labelZ


        labelB.setText("B")
        labelB.move(100, 100)
        labelL.setText("L")
        labelL.move(100, 140)
        labelH.setText("H")
        labelH.move(100, 180)

        labelX.setText("X")
        labelX.move(100, 320)
        labelY.setText("Y")
        labelY.move(100, 360)
        labelZ.setText("Z")
        labelZ.move(100, 400)

        textB = QLineEdit(self)
        textL = QLineEdit(self)
        textH = QLineEdit(self)

        textB.move(labelB.x() + labelB.width(), labelB.y())
        textL.move(labelL.x() + labelL.width(), labelL.y())
        textH.move(labelH.x() + labelH.width(), labelH.y())

        textX = QLineEdit(self)
        textY = QLineEdit(self)
        textZ = QLineEdit(self)
        self.textB=textB
        self.textl=textL
        self.textH=textH
        self.textX=textX
        self.textY=textY
        self.textZ=textZ

        textX.move(labelX.x() + labelX.width(), labelX.y())
        textY.move(labelY.x() + labelY.width(), labelY.y())
        textZ.move(labelZ.x() + labelZ.width(), labelZ.y())

        # self.btn_read.clicked.connect(self.read)
    def read(self):
        x, y, z = [], [], []
        with open("坐标.txt") as A:
            for eachline in A:
                tmp = eachline.split()
                x.append(tmp[0])
                y.append(tmp[1])
                z.append(tmp[2])
            self.x = x[0]
            self.y = y[0]
            self.z = z[0]
        self.textX.setText(self.x)
        self.textY.setText(self.y)
        self.textZ.setText(self.z)
if __name__ == '__main__':
    import sys
    app =QApplication(sys.argv)
    window=BLH_XYZwindow()
    window.show()
    sys.exit(app.exec_())


 


from PyQt5.Qt import *

class  BLH_XYZwindow(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(600, 600)
        self.setWindowTitle("空间直角坐标转大地坐标")
        self.setup_UI()
        self.btn()
        
    def btn(self):
        btn_read = QPushButton(self)
        btn_read.setText("读取")
        btn_read.move(200,250)
        self.btn_read=btn_read
        btn = QPushButton(self)
        self.btn=btn
        btn.setText("转换")
        self.btn.move(300, 250)
        btn_read.clicked.connect(self.read)  # 连接读取槽函数
        
    def setup_UI(self):
        labelB = QLabel(self)
        labelL = QLabel(self)
        labelH = QLabel(self)
 
        labelX = QLabel(self)
        labelY = QLabel(self)
        labelZ = QLabel(self)
        self.labelB=labelB
        self.labelL=labelL
        self.labelH=labelH
        self.labelX=labelX
        self.labelY=labelY
        self.labelZ=labelZ
 
        labelB.setText("B")
        labelB.move(100, 100)
        labelL.setText("L")
        labelL.move(100, 140)
        labelH.setText("H")
        labelH.move(100, 180)
 
        labelX.setText("X")
        labelX.move(100, 320)
        labelY.setText("Y")
        labelY.move(100, 360)
        labelZ.setText("Z")
        labelZ.move(100, 400)
 
        textB = QLineEdit(self)
        textL = QLineEdit(self)
        textH = QLineEdit(self)
 
        textB.move(labelB.x() + labelB.width(), labelB.y())
        textL.move(labelL.x() + labelL.width(), labelL.y())
        textH.move(labelH.x() + labelH.width(), labelH.y())
 
        textX = QLineEdit(self)
        textY = QLineEdit(self)
        textZ = QLineEdit(self)
        self.textB=textB
        self.textl=textL
        self.textH=textH
        self.textX=textX
        self.textY=textY
        self.textZ=textZ
 
        textX.move(labelX.x() + labelX.width(), labelX.y())
        textY.move(labelY.x() + labelY.width(), labelY.y())
        textZ.move(labelZ.x() + labelZ.width(), labelZ.y())
 
    def read(self):
        x, y, z = [], [], []
        with open("坐标.txt") as A:
            for eachline in A:
                tmp = eachline.split()
                x.append(tmp[0])
                y.append(tmp[1])
                z.append(tmp[2])
            self.x = x[0]
            self.y = y[0]
            self.z = z[0]
        self.textX.setText(self.x)
        self.textY.setText(self.y)
        self.textZ.setText(self.z)

if __name__ == '__main__':
    import sys
    app =QApplication(sys.argv)
    window=BLH_XYZwindow()
    window.show()
    sys.exit(app.exec_())