PyQt: Как предотвратить обработку нескольких событий изменения размера при развертывании окна?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 PyQt: Как предотвратить обработку нескольких событий изменения размера при развертывании окна?

Сообщение Anonymous »

У меня есть QMainWindow, содержащий дочерний QWidget, содержащий QLabel.

Когда окно развернуто (например, щелкнув значок развертывания окна, обработчик QLabel.resizeEvent() вызывается несколько раз (предположительно, чтобы следить за постепенным увеличением окна, пока оно не займет все пространство рабочего стола).

Код обработчика событий вызывает setPixmap() для масштабирования растрового изображения метки. Это относительно длительная операция, которая замедляет процесс. Код этикетки:

Код: Выделить всё

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QLabel, QFrame, QGridLayout
from PyQt5.QtGui import QImageReader, QPixmap

class DisplayArea(QLabel):
def __init__(self):
super().__init__()
self.pix_map = None
self.init_ui()

def init_ui(self):
self.setMinimumSize(1, 1)
self.setStyleSheet("border:1px solid black;")

def set_image(self, image):
self.pix_map = QPixmap.fromImage(image)
self.scale_image(self.size())

def scale_image(self, size):
if self.pix_map is None:
return

scaled = self.pix_map.scaled(size, Qt.KeepAspectRatio)
self.setPixmap(scaled)

def resizeEvent(self, e):
self.scale_image(e.size())
super().resizeEvent(e)
Есть ли возможность обработать событие только один раз, когда окно достигнет окончательного размера?

Подробнее здесь: https://stackoverflow.com/questions/539 ... g-a-window
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»