Найти - Пользователи
Полная версия: Как определить кнопку мыши при клике?
Начало » GUI » Как определить кнопку мыши при клике?
1
artberry
Скажите пожалуйста, как определить кнопку мыши при нажатии на баттон.
Я использую коннект слотов по именам QtCore.QMetaObject.connectSlotsByName()

дальше я , кпримеру пишу,

@pyqtSlot()
def on_exp_cache_btn_clicked(self):
print fff

Подскажите, как в таком случае использовать QMouseEvent ?
Studentik
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_()
artberry
Ух ты!! Красота. Работает. Спасибо большое.

Я воспользовался первым вариантом, где написано “Так неправильно…” )))
А почему не правильно, у меня все работает.

Дело в том, что UI я подтягиваю из внешнего файла. Поэтому не очень хочется переписывать инстансы классов.

А если чуть-чуть усложнить задачу? С кнопкой разобрался. А как можно определять кнопку при клике на определенном item'е из QListWidget?
Задача осложняется тем, что изначально не известно количество итемов. Они добавляются по ходу работы скрипта.
Studentik
artberry
А почему не правильно, у меня все работает
Точно не скажу, но заменять в созданном объекте один метод другим выглядит как грязный хак.

artberry
определять кнопку при клике на определенном item'е из QListWidget
тоже самое + http://doc.qt.nokia.com/4.7/qlistwidget.html#itemAt + http://doc.qt.nokia.com/4.7/qmouseevent.html#pos
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB