Python pyqt5 vincula múltiples QpushButtons a la misma función y obtiene diferentes parámetros después de hacer clic en cada botón diferente

Múltiples QpushButtons están vinculados a la misma función, y después de hacer clic en cada botón diferente, se obtienen diferentes parámetros

Definir QpushButtons

Use QtWidgets.QGridLayout() para diseñar la interfaz
代码片.

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.main_layout = QtWidgets.QGridLayout()  # 创建主部件的网格布局
        self.main_widget = QtWidgets.QWidget()  # 创建窗口主部件
        self.init_window()
        self.center()
        self.all_btns = [] # 创建按钮列表 准备添加多个按钮
        # 添加启动按钮
        self.play_btn = QPushButton('开始',self)
        self.play_btn.clicked.connect(self.click_paly)
        self.main_layout.addWidget(self.play_btn, 0, 1, 1, 1)
        
    def init_window(self):
        # 初始化窗口
        self.resize(960, 700)
        # self.setMinimumSize(200, 200)
        # self.setMaximumSize(1800, 1400)
        self.main_widget.setLayout(self.main_layout)  # 设置窗口主部件布局为网格布局

        # 设置窗口标题
        self.setWindowIcon(QtGui.QIcon("../../img/title.jpg"))  # 设置窗口图标
        self.setWindowTitle("c窗口")  # 设置窗口名

        self.setCentralWidget(self.main_widget)  # 设置窗口主部件
        self.main_widget.setStyleSheet('''QWidget{border-radius:7px;background-color:#FAFAFC;}''')

    def center(self):
        # 获取屏幕的大小
        screen = QDesktopWidget().screenGeometry()
        # 获取窗口的大小
        size = self.geometry()
        # 将窗口移动到屏幕中央
        self.move(int((screen.width() - size.width()) / 2), int((screen.height() - size.height()) / 2))

Crear botón para pasar diferentes parámetros


	# 使用列表存储传递的参数
	nums = []
	# data_num 为所需多少按钮的数量
	def btn_UI(self,data_num):
			# 临时参数
	        num = 0
        for item in data_num:
        	# 添加数据
        	self.nums.append(num)
        	 btn = QPushButton('一个按钮', self)
        	 # 添加按钮
            self.all_btns .append(btn)
            # 绑定函数 传递不同参数
            self.all_btns[num].clicked.connect(partial(self.click_func, self.nums[num]))
			# 添加按钮到布局
            self.main_layout.addWidget(self.all_btns[num], 1+ num, 1, 1, 1)
            num+=1

función ligada al botón

    def click_func(self, num):
        sender = self.sender()
        print(num)
        print(sender.text() + '被点击')

botón de llamada

	def click_paly(self):
		self.btn_UI(5)

Supongo que te gusta

Origin blog.csdn.net/love_wgll/article/details/129146129
Recomendado
Clasificación