:
{your parent widget}.findChild({name class}, {your name})
:
{your widget}.setObjectName({your name})
あなたはfindChild
機能を介して親を介してアクセスすることができます
例:
import sys
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
class Widget(QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent=parent)
self.verticalLayout = QVBoxLayout(self)
# self.verticalLayout.setObjectName("verticalLayout")
for i in range(10):
pushButton = QPushButton(self)
pushButton.setObjectName("pushButton{}".format(i))
pushButton.setText(str(i))
self.verticalLayout.addWidget(pushButton)
timer = QTimer(self)
timer.setInterval(1000)
timer.timeout.connect(self.updateText)
timer.start()
def updateText(self):
for i in range(10):
child = self.findChild(QPushButton, "pushButton{}".format(i))
counter = int(child.text())
child.setText(str(counter+1))
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
[QButtonGroup](https://doc.qt.io/qt-5/qbuttongroup.html)。 – ekhumoro
@ekhumoro。あなたが何を示唆しているのか分かりません。各ボタンの上にタイトなラベルを追加する方法として、各ボタンはQGroupBox内にあります。また、イベントに応じて個々のボックスの背景色を変更したいと思っています(ボタンの色を変更することなく、別のイベントのインジケータとしても行いたい)。実際のボタンウィジェットと同じ方法でQGroupBoxに整数IDを割り当てることはできますか?現在はQGridLayoutに追加されています。 – chmedly
各ボタンはグループボックスを親として持つので、 'button.parent()'でアクセスすることができます。ボタングループは、ボタンのセット(IDを使用)にアクセスし、単一の接続を介してすべての信号を処理する統合された方法を提供します。これは単なる便利なクラスで、ボタンを自分で管理する必要がありません。 (PS:Qt Designerを使用してボタングループを設定することもできます)(http://stackoverflow.com/a/41861892/984421))。 – ekhumoro