私は、マウスがマウスの上に置かれたときにQPushButtonのアイコンを変更するという例を見出しました。私はそれを私のコードに変換しようとしましたが、いくつか問題があります。最初に私が見つけた例をチェックしてください、それは本当に短いです。 http://paste.ubuntu.com/17302717/PyQt5 mousetracking not working
これらのコードは、マウスがオンの場合にボタンのアイコンを変更します。問題がどこにあるここに私のコードがあるエラー
return QPushButton.mouseMoveEvent(QPushButton, event) TypeError: QPushButton.mouseMoveEvent(QMouseEvent): first argument of unbound method must have type 'QPushButton'
from PyQt5.QtWidgets import QApplication,QPushButton,QWidget
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import QSize
import PyQt5.QtWidgets,PyQt5.QtCore,sys
class cssden(QMainWindow):
def __init__(self):
super().__init__()
self.mwidget = QMainWindow(self)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.setMouseTracking(True)
self.setFixedSize(1400,923)
#Button
self.mbutton = QPushButton(self)
self.mbutton.setStyleSheet("background-color: rgb(30,30,30);"
"background-image: url('resources/twitter-logo.png');"
"border: 3px solid black;"
"background-position: center;"
)
self.mbutton.setGeometry(2,300,110,60)
self.mbutton.clicked.connect(self.yaz)
self.show()
def mouseMoveEvent(self, event):
if event.pos().x()>self.mbutton.width()-10 or event.pos().y()>self.mbutton.height()-10\
or event.pos().x() < 10 or event.pos().y()< 10:
bmp = QIcon("1.png")
self.mbutton.setIcon(bmp)
else:
bmp = QIcon('2.png')
self.mbutton.setIcon(bmp)
self.mbutton.setIconSize(QSize(200,200))
return QPushButton.mouseMoveEvent(self, event)
def yaz(self):
print ("button pressed")
app = QApplication(sys.argv)
app.setStyleSheet("QMainWindow{background-color: rgb(30,30,30);border: 2px solid rgb(20,20,20)}")
ex = cssden()
sys.exit(app.exec_())
を上げること、私は理解していません。 return QPushButton.mouseMoveEvent(self, event)
をreturn QPushButton.mouseMoveEvent(QPushButton, event)
と他のバージョンに変更しようとしましたが、動作しませんでした。どのように私は行方不明だ、私はこれを修正することができますか?
EDIT:私はself.mbutton.setMouseTracking(True)
にself.setMouseTracking(True)
を変更しないとエラーになりましたが、アイコンはとにかく変更されていません。なぜアイコンが変わっていないのですか?
はあなたの最初の例では作業が、2番目されていません私が欲しいものをやっている。だから別のクラス 'class HoverButton(QPushButton)'を作成し、それを自分のコードで使用する必要がありますか? – GLHF
@GLHF私は投稿する前にそれらをテストしてから両方が働いていることを保証することができます。作業がうまくいっているということではありません。私が言ったように、私はあなたが何をしようとしているのかを理解するのが難しいです。いずれの場合でも答えはYesです。私の視点からは、QPushButtonをサブクラス化するのが最善の方法です。 – armatita