Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Как определить кнопку мыши при клике? [RSS Feed]

#1 Июнь 6, 2011 16:33:19

artberry
От:
Зарегистрирован: 2011-06-06
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить кнопку мыши при клике?

Скажите пожалуйста, как определить кнопку мыши при нажатии на баттон.
Я использую коннект слотов по именам QtCore.QMetaObject.connectSlotsByName()

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

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

Подскажите, как в таком случае использовать QMouseEvent ?



Офлайн

#2 Июнь 6, 2011 21:07:59

Studentik
От:
Зарегистрирован: 2009-12-26
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить кнопку мыши при клике?

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_()



Офлайн

#3 Июнь 7, 2011 11:14:03

artberry
От:
Зарегистрирован: 2011-06-06
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить кнопку мыши при клике?

Ух ты!! Красота. Работает. Спасибо большое.

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

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

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



Отредактировано (Июнь 7, 2011 12:50:02)

Офлайн

#4 Июнь 7, 2011 14:35:32

Studentik
От:
Зарегистрирован: 2009-12-26
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить кнопку мыши при клике?

artberry
А почему не правильно, у меня все работает
Точно не скажу, но заменять в созданном объекте один метод другим выглядит как грязный хак.

artberry
определять кнопку при клике на определенном item'е из QListWidget
тоже самое + http://doc.qt.nokia.com/4.7/qlistwidget.html#itemAt + http://doc.qt.nokia.com/4.7/qmouseevent.html#pos



Офлайн

  • Начало
  • » GUI
  • » Как определить кнопку мыши при клике?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version