43318


pyqt5で画像をクリックしたときに動作する機能を付けたいです。そこで次のようなコードを書いてみました。

[code]

    import sys
    from PyQt5.QtWidgets import (QWidget,
        QVBoxLayout, QHBoxLayout, QApplication, QPushButton, QLabel, QLineEdit)
    from PyQt5 import*
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    
    class Example(QWidget):
    
        def __init__(self):
            super().__init__()
    
            self.initUI()
    
    
        def initUI(self):
            font=QtGui.QFont("00コミック7",20)
            self.setStyleSheet("background-color: #80ff80")
    
    
            img=QPixmap("ぶりぶりざえもん.jpg")
            btn=QPushButton("")
            btn.setIcon(QIcon(img))
            btn.setIconSize(QSize(337,400))     
            lbl=QLabel(self)
            lbl.setPixmap(QPixmap(img))
    
            layout=QVBoxLayout()
            layout.addWidget(btn)
            layout.addWidget(lbl)
    
            self.setLayout(layout)
    
            self.setWindowTitle('Absolute')    
            self.show()
    
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        ex = Example()
        sys.exit(app.exec_())
    
[/code]

これを実行すると次のようなGUIが出来ます。  
[![画像](https://i.stack.imgur.com/Wa8Xp.png)](https://i.stack.imgur.com/Wa8Xp.png)  
上の画像はボタンにアイコンをセットしたものです。画像の背景はあらかじめキャンバスの背景と同じ色にしています。しかし、これではボタンであることが一目瞭然で分かってしまいます。下の画像はQLabelに画像をセットしたものです。これならばボタンであることはばれません。質問内容としては  
1、ボタンの陰影をなくすにはどうすればよいか  
2、ラベルをクリックしたときに関数を呼び出すことはできるか  
の二つです。どちらかが出来れば隠しボタンが作れる気がしますが、やり方が分かりません。


CC BY-SA 3.0
2018-04-17T06:59:26.823
43311
2018-04-17T08:44:15.237
26529
question
python pyqt
pyqtで隠しボタンのようなものを作りたい


ボタンの陰影をなくすには、

[code]

    button.setFlat(True)
    
[/code]

にしておいて、  
それで、  
ラベルについては、

[code]

    class TestLabel(QLabel):
        def __init__(self,parent=None):
            super(TestLabel,self).__init__(parent=None)
        def mousePressEvent(self,event):
            if event.button() == Qt.LeftButton:
                self.clickedmethod()
            return QLabel.mousePressEvent(self,event)
        def clickedmethod(self):
            #処理したい内容。
    
[/code]

`QLabel`を継承して、マウスイベントをオーバーライドする方法でどうですか？  
すいません。例によってPySideで書いているもので、エッセンスは伝わりませんか？


CC BY-SA 3.0
2018-04-17T08:44:15.237
43318
2018-04-17T08:44:15.237
24284
43311
answer