簡體   English   中英

PyQt5 - 如何知道哪個按鈕被按下

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM