Function PyQt5多个按钮和1个更改按钮文本的功能

Function PyQt5多个按钮和1个更改按钮文本的功能,function,button,pyqt5,Function,Button,Pyqt5,我有一个有多个按钮的应用程序 按下按钮时,必须更改按钮上的文字。 这可以通过为每个按钮使用单独的函数来完成,但是我想使用1个函数来保持代码的简短 迄今为止的代码: from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QApplication, QMainWindow import sys class MyWindow(QMainWindow): def __init__(self):

我有一个有多个按钮的应用程序 按下按钮时,必须更改按钮上的文字。 这可以通过为每个按钮使用单独的函数来完成,但是我想使用1个函数来保持代码的简短

迄今为止的代码:


from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys


class MyWindow(QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        self.setGeometry(200, 200, 700, 500)
        self.setWindowTitle("Tic Tac Toe")
        self.initUI()

    def initUI(self):
        font = QtGui.QFont()
        font.setPointSize(50)
        font.setBold(True)
        font.setWeight(75)
        self.btn1 = QtWidgets.QPushButton(self)
        self.btn1.setGeometry(QtCore.QRect(90, 50, 93, 91))
        self.btn1.setFont(font)
        self.btn1.setObjectName("btn1")
        self.btn1.clicked.connect(lambda:self.function("btn1"))
        self.btn2 = QtWidgets.QPushButton(self)
        self.btn2.setGeometry(QtCore.QRect(210, 50, 93, 91))
        self.btn2.setFont(font)
        self.btn2.setText("")
        self.btn2.setObjectName("btn2")
        self.btn2.clicked.connect(lambda:self.function("btn2"))

        font2 = QtGui.QFont()
        font2.setPointSize(16)
        self.label = QtWidgets.QLabel(self)
        self.label.setGeometry(QtCore.QRect(470, 50, 201, 51))
        self.label.setFont(font2)
        self.label.setObjectName("label")

    def function(self, btnnmbr):
        self.label.setText("knop " + btnnmbr)
        #self.btn1.setText("X")    
        

     


# Mainloop
def window():
    app = QApplication(sys.argv)
    win = MyWindow()
    win.show()
    sys.exit(app.exec_())

window()
知道如何更改按钮已单击实例的文本吗?

试试:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow


class MyWindow(QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        self.setGeometry(200, 200, 700, 500)
        self.setWindowTitle("Tic Tac Toe")
        self.initUI()

    def initUI(self):
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        
        self.btn1 = QtWidgets.QPushButton(self)
        self.btn1.setGeometry(QtCore.QRect(90, 50, 93, 91))
        self.btn1.setFont(font)
        self.btn1.setObjectName("btn1")
        self.btn1.clicked.connect(lambda ch, btn=self.btn1: self.function(btn))  # +
        
        self.btn2 = QtWidgets.QPushButton(self)
        self.btn2.setGeometry(QtCore.QRect(210, 50, 93, 91))
        self.btn2.setFont(font)
        self.btn2.setText("")
        self.btn2.setObjectName("btn2")
        self.btn2.clicked.connect(lambda ch, btn=self.btn2: self.function(btn))  # +

        font2 = QtGui.QFont()
        font2.setPointSize(16)
        self.label = QtWidgets.QLabel(self)
        self.label.setGeometry(QtCore.QRect(470, 50, 201, 51))
        self.label.setFont(font2)
        self.label.setObjectName("label")

    def function(self, btn):                                                     # + btn
        self.label.setText(f"knop {btn.objectName()}")                           # +
        btn.setText(btn.objectName())                                            # +++
        #self.btn1.setText("X")    
        

if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = MyWindow()
    win.show()
    sys.exit(app.exec_())
试试看:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow


class MyWindow(QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        self.setGeometry(200, 200, 700, 500)
        self.setWindowTitle("Tic Tac Toe")
        self.initUI()

    def initUI(self):
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        
        self.btn1 = QtWidgets.QPushButton(self)
        self.btn1.setGeometry(QtCore.QRect(90, 50, 93, 91))
        self.btn1.setFont(font)
        self.btn1.setObjectName("btn1")
        self.btn1.clicked.connect(lambda ch, btn=self.btn1: self.function(btn))  # +
        
        self.btn2 = QtWidgets.QPushButton(self)
        self.btn2.setGeometry(QtCore.QRect(210, 50, 93, 91))
        self.btn2.setFont(font)
        self.btn2.setText("")
        self.btn2.setObjectName("btn2")
        self.btn2.clicked.connect(lambda ch, btn=self.btn2: self.function(btn))  # +

        font2 = QtGui.QFont()
        font2.setPointSize(16)
        self.label = QtWidgets.QLabel(self)
        self.label.setGeometry(QtCore.QRect(470, 50, 201, 51))
        self.label.setFont(font2)
        self.label.setObjectName("label")

    def function(self, btn):                                                     # + btn
        self.label.setText(f"knop {btn.objectName()}")                           # +
        btn.setText(btn.objectName())                                            # +++
        #self.btn1.setText("X")    
        

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