2024-03-29 05:24:08 发布
网友
我有一个2列3行的QGrid。第一列由QPushButtons组成,第二列由QLabel组成。 按钮=>;[“这个按钮“,”那个按钮“,”一个按钮“]。所有标签都从文本0开始。按一行中的按钮应通过添加1来更改同一行中标签的文本(编号)
上面是问题的简化版本,实际上我有10+行和5+列
如何用尽可能少的代码在网格中创建所有这些行和列?我如何将每个按钮链接到它各自的标签,而不必为每个单独的按钮创建一个函数
有几种方法可以解决这个问题,我将展示一些:
class Widget(QWidget): def __init__(self, *args, **kwargs): QWidget.__init__(self, *args, **kwargs) lay = QGridLayout(self) for i in range(3): btn = QPushButton("button-{}".format(i), self) lbl = QLabel("{}".format(0)) lay.addWidget(btn, i, 0) lay.addWidget(lbl, i, 1) btn.clicked.connect(lambda checked, l=lbl: self.fun(l)) def fun(self, lbl): n = int(lbl.text()) + 1 lbl.setText(str(n))
class Widget(QWidget): def __init__(self, *args, **kwargs): QWidget.__init__(self, *args, **kwargs) lay = QGridLayout(self) self.connections = {} for i in range(3): btn = QPushButton("button-{}".format(i), self) lbl = QLabel("{}".format(0)) lay.addWidget(btn, i, 0) lay.addWidget(lbl, i, 1) self.connections[btn] = lbl btn.clicked.connect(self.fun) def fun(self): lbl = self.connections[self.sender()] n = int(lbl.text()) + 1 lbl.setText(str(n))
有几种方法可以解决这个问题,我将展示一些:
相关问题 更多 >
编程相关推荐