2016-11-29 10 views
-1

私はQTをかなり新しくしています。 ボタンをクリックした後、いくつかの矩形をペイントしようとしています。 paintEventメソッドは動作しているようですが、ボタンをクリックしても何も起こりません。 何とかmainWindowを更新する必要があると思います。 コード:PyQt5 update MainWindow after 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

あなたpridaj_slide機能で(それが再びpaintEventを呼び出します)表示を更新するself.repaint()を呼び出すことができます。

def pridaj_slide(self): 
    self.pridat_slide = True 
    self.repaint() 
関連する問題