2016-11-29 35 views
-1

我對QT很新。 我想按鈕單擊後畫一些矩形。 paintEvent方法似乎工作,但按鈕後單擊沒有任何反應 我想我需要更新mainWindow莫名其妙。 代碼:PyQt5更新後paintEvent主窗口

from PyQt5 import QtCore, QtGui, uic, QtWidgets 
from PyQt5.QtWidgets import QMainWindow, QApplication 
from PyQt5.QtGui import QPainter, QColor, QBrush 

qtCreatorFile = "gui.ui" # Enter file here. 

#This is where you add the file you created earlier. It is loaded using the inbuilt function 
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile) 

class MyApp(QtWidgets.QMainWindow): 

    pridat_slide = False 

    def __init__(self): 
     super(MyApp, self).__init__() 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 
     self.ui.pridaj_slide.clicked.connect(self.pridaj_slide) 


    def pridaj_slide(self): 
     self.pridat_slide = True 

    def paintEvent(self, e): 
     qp = QPainter() 
     qp.begin(self) 
     self.drawRectangles(qp) 
     qp.end() 

    def drawRectangles(self, qp): 
     if self.pridat_slide: 
      print ("test"); 

      qp.setBrush(QColor(200, 0, 0)) 
      qp.drawRect(10, 15, 90, 60) 

      qp.setBrush(QColor(255, 80, 0, 160)) 
      qp.drawRect(130, 15, 90, 60) 

      qp.setBrush(QColor(25, 0, 90, 200)) 
      qp.drawRect(250, 15, 90, 60) 
      self.update() 
      self.pridat_slide = False 

if __name__ == "__main__": 
    try: 
     app = QtWidgets.QApplication(sys.argv) 
     window = MyApp() 
     window.show() 
     sys.exit(app.exec_()) 

屏幕:"test" is printed

感謝您的任何建議&改進。

解決

問題是在主窗口的背景色。我刪除了background-color: rgb(145,145,145);和矩形都起來了。

回答

0

你可以打電話self.repaint()更新顯示在您的pridaj_slide功能(它會再次調用paintEvent):

def pridaj_slide(self): 
    self.pridat_slide = True 
    self.repaint()