Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 1, 2013 14:21:02

i_am_kisly
Зарегистрирован: 2013-05-25
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

label as button

Не могу найти примеров взаимодействия мыши и label. Например : клик ЛКМ > обрабатываем, как кнопку, клик ПКМ меняем цвет текста на красный.

Нашла гуглом вот такой код :

#ifndef QEXLABEL_H
#define QEXLABEL_H
#include <QLabel>
#include <QWidget>
#include <QMouseEvent>
 
class QExLabel : public QLabel
{
Q_OBJECT
public:
explicit QExLabel(QWidget *parent = 0) : QLabel(parent){};
signals:
void clicked(QObject *sender);
protected:
void mouseReleaseEvent(QMouseEvent *e)
{
if (e->button() == Qt::LeftButton)
{
emit clicked((QObject*)this);
}
}
};
#endif // QEXLABEL_H

но как перевести на python я не поняла. оригинал тут

заранее спассибо

Офлайн

#2 Июнь 1, 2013 16:01:33

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

label as button

import sys
from PyQt4.QtGui import  QApplication, QWidget, QLabel
from PyQt4.QtCore import Qt, QString
  
app = QApplication(sys.argv)
 
class ClickableLabel(QLabel):    
    def __init__(self, *args):
        super(ClickableLabel, self).__init__(*args)
        self.clickActions = {
            Qt.LeftButton : self.makeSomething,
            Qt.RightButton : lambda : self.setStyleSheet('QLabel { color : red; }')
        }
         
    def mousePressEvent(self, ev):
        clickAction = self.clickActions[ev.button()]
        clickAction()
 
    def makeSomething(self):
        print('privet')
  
class Window(QWidget):
    def __init__(self):
        super(Window,self).__init__()
        l = ClickableLabel("text",self)
  
w = Window() 
w.show()
sys.exit(app.exec_())

Офлайн

#3 Июнь 1, 2013 16:29:18

i_am_kisly
Зарегистрирован: 2013-05-25
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

label as button

ууу!!! моей благодарности нет придела !!

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version