繁体   English   中英

如何在PySide / PyQt中放大和缩小UI

[英]How to in PySide/PyQt, zooming in and out UI

我不时在Maya中练习PySide,现在我想拥有UI,它将在不同的缩放范围下表现不同。 基本上,当我在特定范围内放大时,我希望看到一种按钮,当我缩小时,又会看到不同的按钮。 有人知道我可以研究哪种布局或一些示例吗? 谢谢。

为了缩放,我有一个自定义QGraphicsView,看起来像:

from PyQt5.QtWidgets import QGraphicsView, QSizePolicy


class GraphicsView(QGraphicsView):

    def __init__(self):
        super(GraphicsView, self).__init__()
        # Graphics view variables
        self.start = None
        self.end = None
        self.box_list = list()
        self.__zoom = 0
        self.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))

    def wheelEvent(self, event):
        if event.angleDelta().y() > 0:
            factor = 1.25
            self.__zoom += 1
        else:
            factor = 0.8
        if self.__zoom > 0:
            self.scale(factor, factor)
        elif self.__zoom == 0:
            # self.fitInView()
            pass
        else:
            self.__zoom = 0

基于此,您可能会有一个pysignal并以一定的自发进行发射。__zoom级别使您可以将该信号连接到负责更改工具栏或您需要的方法。

例如:

from PyQt5.QtWidgets import QGraphicsView, QSizePolicy
from PyQt5.QtCore import pyqtSignal

class GraphicsView(QGraphicsView):

    zoom_signal = pyqtSignal(bool)

    def __init__(self):
        super(GraphicsView, self).__init__()
        # Graphics view variables
        self.start = None
        self.end = None
        self.box_list = list()
        self.__zoom = 0
        self.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))

    def wheelEvent(self, event):
        if event.angleDelta().y() > 0:
            factor = 1.25
            self.__zoom += 1
        else:
            factor = 0.8
        if self.__zoom > 0:
            self.scale(factor, factor)
        if self.__zoom > 10:
            self.zoom_signal.emit(True)
        elif self.__zoom < 10:
            self.zoom_signal.emit(False)
        else:
            self.__zoom = 0

这可能无法满足您的需求,但是概念已经存在,可以修改以完成您想要的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM