[英]PyQt5 - how to know which of the button is pressed
我正在創建一個需要看起來像網格的 GUI。 它有 900 個在循環中創建的按鈕。 有什么方法可以確定按下了哪個按鈕?
for i in range(30):
for j in range(30):
button = QPushButton()
layout.addWidget(button, i, j)
因此,例如,如果在第 25 行和第 13 列按下按鈕,我想要一個 function 來打印按鈕 (25,13) 已被單擊。
您可以使用QObject::ObjectName 。 這將允許您將名稱設置為每個按鈕的字符串。 然后,您可以connect
每個按鈕連接到使用該信息執行某些操作的插槽。
您的代碼可能看起來像這樣。 注意:此代碼未經測試。
def makeButtons(self):
for i in range(30):
for j in range(30):
button = QPushButton()
button.clicked.connect(self.someSlot)
layout.addWidget(button, i, j)
def someSlot(self):
name = self.sender().objectName()
print(name)
根據您的需要,您還可以使用QButtonGroup 。 它使信號處理更容易,並且每個按鈕都有一個自定義 ID。
像這樣的東西:
def makeButtons(self):
n = m = 30
self.group = group = QButtonGroup()
group.setExclusive(False)
for i in range(n):
for j in range(m):
button = QPushButton()
id = i * m + j
group.addButton(button, id)
group.idClicked.connect(self.onIdClicked)
def onIdClicked(self, id):
row, col = divmod(id, 30)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.