Это то, что вы ищете
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import pyqtSignal
import os,sys
class Main(QtGui.QWidget):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
layout = QtGui.QVBoxLayout(self) # layout of main widget
button = HoverButton(self)
button.setIconSize(QtCore.QSize(200,200))
layout.addWidget(button) # set your button to the widgets layout
# this will size the button nicely
class HoverButton(QtGui.QToolButton):
def __init__(self, parent=None):
super(HoverButton, self).__init__(parent)
self.setMouseTracking(True)
def enterEvent(self,event):
print("Enter")
self.setStyleSheet("background-color:#45b545;")
def leaveEvent(self,event):
self.setStyleSheet("background-color:yellow;")
print("Leave")
app = QtGui.QApplication(sys.argv)
main = Main()
main.show()
sys.exit(app.exec_())
В вашем коде у вас была кнопка в кнопке, а вложенная кнопка не была назначена виджету QLayout
. Хотя я не уверен, почему вы добавляете кнопку внутри кнопки. Одна вещь, которую я узнал от работы с GUI, заключается в том, что намного проще, если вы модульно кодируете. Теперь вы можете взять эту пользовательскую кнопку и применить ее где-нибудь еще.