작은 예제를 작성 했으므로 실행할 수 없습니다.pyqt4 mousePressEvent가 호출되지 않았습니다. (위젯이 없습니다.)
from PyQt4 import QtGui, QtCore
import sys
class Drawer(QtGui.QWidget):
def __init__(self, parent=None):
super(Drawer, self).__init__(parent)
self.setStyleSheet("QWidget { background-color: %s }" % QtGui.QColor(99, 0, 0).name())
def mousePressEvent(self, event):
print 'mouse pressed'
self.update();
class MyApp(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.drawer = Drawer(self)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
myapp = MyApp()
myapp.show()
sys.exit(app.exec_())
위젯이 표시되지되지 않은 (더 색 창은 회색입니다) 그리고 난 마우스없이 인쇄를 .. 누르면
어디 내 오류가 무엇입니까?SOLVED : qiao으로 의견을 보내주십시오. 제 실수는 qt4 종류의 장면 그래프에 위젯을 추가하는 방법입니다. 나는 에 부모님에게 전화해야한다고 생각했습니다. 이것은 QLayout을 추가하지 않고 자식을 추가해야합니다 (이것은 매우 명백합니다 : addWidget은 QLayout에만 쓰여지고 QWidget에는 쓰이지 않고 새로운 자식 추가 가능성이없는 장면 그래프 시스템이 있습니다. 상당히 이상 함)
이 예제에서는 올바르게 실행됩니다. 그러나 그것은 단순화입니다! :(나는 더 큰 GUI가 QtDesigner와 함께 설계되어 있고 : * self.drawer = Drawer (self.ui.drawBox) *. 만약 내가 시도 : * self.ui.drawBox.setCentralWidget (self.drawer) * 내가 얻을 ** AttributeError : 'QWidget'객체에는 'setCentralWidget'속성이 없습니다 ** – nkint
@nkint'setCentralWidget'은'QMainWindow' 인스턴스에만 적용될 수 있습니다. 다른 위젯의 경우 레이아웃을 설정하고 레이아웃에 하위 위젯을 추가해야합니다 . – qiao
해결되었습니다. 감사합니다. – nkint