Форум сайта python.su
Скажите пожалуйста, как определить кнопку мыши при нажатии на баттон.
Я использую коннект слотов по именам QtCore.QMetaObject.connectSlotsByName()
дальше я , кпримеру пишу,
@pyqtSlot()
def on_exp_cache_btn_clicked(self):
print fff
Подскажите, как в таком случае использовать QMouseEvent ?
Офлайн
from PyQt4 import Qt as qt
import sys
app = qt.QApplication(sys.argv)
mw = qt.QMainWindow()
fr = qt.QFrame()
lt = qt.QVBoxLayout()
fr.setLayout(lt)
mw.setCentralWidget(fr)
#1
te = qt.QTextEdit("1) Так неправильно, но без наследования")
def mousePressEvent(event):
te.insertPlainText("Clicked button {}\n".format(event.button()))
te.mousePressEvent = mousePressEvent
lt.addWidget(te)
#2
class myTextEdit2(qt.QTextEdit):
def mousePressEvent(self, event):
self.insertPlainText("Clicked button {}\n".format(event.button()))
te2 = myTextEdit2("2) Так правильно")
lt.addWidget(te2)
#3
class myTextEdit3(qt.QTextEdit):
clickedButton = qt.pyqtSignal(int)
def mousePressEvent(self, event):
self.clickedButton.emit(event.button())
te3 = myTextEdit3("3) Так тоже правильно")
lt.addWidget(te3)
def clickedButton(button):
te3.insertPlainText("Clicked button {}\n".format(button))
te3.clickedButton.connect(clickedButton)
mw.show()
app.exec_()
Офлайн
Ух ты!! Красота. Работает. Спасибо большое.
Я воспользовался первым вариантом, где написано “Так неправильно…” )))
А почему не правильно, у меня все работает.
Дело в том, что UI я подтягиваю из внешнего файла. Поэтому не очень хочется переписывать инстансы классов.
А если чуть-чуть усложнить задачу? С кнопкой разобрался. А как можно определять кнопку при клике на определенном item'е из QListWidget?
Задача осложняется тем, что изначально не известно количество итемов. Они добавляются по ходу работы скрипта.
Отредактировано (Июнь 7, 2011 12:50:02)
Офлайн
artberryТочно не скажу, но заменять в созданном объекте один метод другим выглядит как грязный хак.
А почему не правильно, у меня все работает
artberryтоже самое + http://doc.qt.nokia.com/4.7/qlistwidget.html#itemAt + http://doc.qt.nokia.com/4.7/qmouseevent.html#pos
определять кнопку при клике на определенном item'е из QListWidget
Офлайн