多个QpushButton绑定同一个函数,点击每一个不同的按钮后,获取不同的参数
定义QpushButtons
使用QtWidgets.QGridLayout()布局界面
代码片
.
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))
创建按钮 传递不同参数
# 使用列表存储传递的参数
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
按钮绑定的函数
def click_func(self, num):
sender = self.sender()
print(num)
print(sender.text() + '被点击')
调用按钮
def click_paly(self):
self.btn_UI(5)