回答
您可以連接到您的按鈕事件來獲取觸發事件的對象的函數調用self.sender()
。從那裏您可以調用對象的objectName()
方法來獲取名稱。
下面是一個簡單的例子 - 小部件有10個按鈕,單擊按鈕將更新標籤的文本以顯示按鈕名稱。
import sys
from PyQt4.QtGui import QApplication, QWidget, QToolButton, QLabel, QVBoxLayout, QHBoxLayout
class Widget(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.button_layout = QHBoxLayout()
self.widget_layout = QVBoxLayout()
for button_number in xrange(1, 11):
button = QToolButton()
button.setText(str(button_number))
button.setObjectName('Button%d' % button_number)
button.released.connect(self.button_released)
self.button_layout.addWidget(button)
self.status_label = QLabel('No button clicked')
self.widget_layout.addItem(self.button_layout)
self.widget_layout.addWidget(self.status_label)
self.setLayout(self.widget_layout)
def button_released(self):
sending_button = self.sender()
self.status_label.setText('%s Clicked!' % str(sending_button.objectName()))
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = Widget()
widget.show()
sys.exit(app.exec_())
@加里,你的工作很棒。它解決了我的問題。謝謝 –
@ Gary,但'.objectName()'返回'None'。任何想法爲什麼? –
聽起來像你還沒有設置對象名稱。如果它是按鈕的文本,則可以嘗試'.text()'。 –
我認爲你必須實現從QToolButton派生的iconlabel類:
這樣的:
class IconLabel : public QToolButton
{
Q_OBJECT
public:
explicit IconLabel(QWidget *parent = 0);
bool event (QEvent* e);
QString name;
signals:
void clicked_signal(QString);
};
bool IconLabel::event (QEvent* e) {
if (e->type() == QEvent::Paint) {
return QToolButton::event(e);
}
if(e->type() == QEvent::MouseButtonPress)
{
emit clicked_signal(name);
return true;
}
return true;
}
connect(iconlabel, SIGNAL(clicked_signal(QString)), this, SLOT(getClickedButtonName(QString)));
我正在使用'lambda','lambda:self.doSomthing(self.buttonName)',它不工作,如何使用回調? –
這可能是有用的你:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/new_style_signals_slots.html – Al2O3
@ Rubby謝謝你,鏈接的文檔。 –
- 1. 按鈕被點擊
- 2. python or pyqt - 檢查鼠標按鈕被點擊的狀態
- 3. pyqt按鈕點擊不起作用
- 4. PyQt點擊按鈕後顯示文本
- 5. 每次按鈕被點擊
- 6. 確保按鈕被點擊
- 7. 佈局被點擊按鈕
- 8. 等待按鈕被點擊
- 9. AS3 |當按鈕被點擊
- 10. 按鈕不被點擊
- 11. 按鈕被點擊後,另一個按鈕就不會點擊
- 12. PyQt的:當一個按鈕被按下
- 13. 獲取被點擊的按鈕的ID
- 14. Unity3d按鈕被點擊時,它不應該被點擊
- 15. 按鈕 「+」 不被點擊的硒
- 16. Struts2的Autocompleter - 提交按鈕被點擊
- 17. 尋找按鈕被點擊的班級
- 18. 被點擊後的按鈕顏色
- 19. excel中的按鈕未被點擊
- 20. 開始的setInterval當按鈕被點擊
- 21. 如何訪問被點擊的按鈕?
- 22. JQuery的:/被點擊事件按鈕
- 23. 改變面板的按鈕被點擊
- 24. 檢測按鈕被點擊的位置
- 25. 通過點擊PyQt的按鈕隱藏佈局的一部分
- 26. 獲取被點擊的按鈕旁邊的按鈕
- 27. 更改按鈕上的Pyqt狀態欄文本點擊
- 28. 按鈕點擊pyqt和python(x,y)的顯示圖matplotlibwidget
- 29. 我想點擊按鈕被點擊時的顏色
- 30. Android的 - 按鈕偵聽知道哪個按鈕被點擊
請張貼一些代碼。 – Avaris