我仍然對你想要的東西有輕微的猜測,但聽起來好像你基本上想爲paintEvent
方法需要兩種模式 - 正常的方法是在大部分時間內處理部件,輕量級,可以在窗口小部件調整大小時使用的模式。
如果是這樣的話,那麼你可以嘗試像下面...
#!/usr/bin/python3
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class widget(QWidget):
def __init__(self):
super().__init__()
self.resize_timer = QTimer(self)
self.resize_timer.setSingleShot(True)
self.resize_timer.setInterval(100)
self.resize_timer.timeout.connect(self.delayed_update)
def delayed_update(self):
self.update()
def paintEvent(self, event):
if self.resize_timer.isActive():
print("painting deferred")
# Your `lightweight' rendering goes here and will be used
# while the widget is being resized.
else:
print("painting now")
# Full rendering code goes here.
def resizeEvent(self, event):
super(widget, self).resizeEvent(event)
self.resize_timer.start()
if __name__ == '__main__':
app = QApplication(sys.argv)
f = widget()
f.show()
sys.exit(app.exec_())
注意,它本質上是在您鏈接到答案的代碼只是一個簡單的修改。
如果您鏈接的答案不是您要查找的內容,那麼您需要更詳細地解釋您想要的內容。 –
那麼在從鏈接做例子的時候,有如下的狀況。當我們開始調整大小時,QWidget中的內容就會隱藏,當我們停止調整主窗口的大小時,它會取消隱藏。所以,當我們調整QMainWindow的大小時,QWidget的內容是不可見的,這是不好的。我只想知道,可能有一種方法可以確保內容不會在調整大小和重新繪製時發生變化,因爲當我們完成調整大小時 –
因此,當小部件調整大小時,您期望在小部件中看到什麼? –