Найти - Пользователи
Полная версия: label as button
Начало » GUI » label as button
1
i_am_kisly
Не могу найти примеров взаимодействия мыши и 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 я не поняла. оригинал тут

заранее спассибо
sergeek
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_())
i_am_kisly
ууу!!! моей благодарности нет придела !!
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