如何在PyQt6中进行内容缩放?

问题描述 投票:0回答:1

因此,我使用 PyQt6 构建了一个桌面应用程序,我希望桌面应用程序内容能够根据我们的屏幕尺寸调整大小。例如,我有一个比例为 770 x 550 的布局,我希望这个用户界面比例适用于任何给定的显示器尺寸。有谁知道怎么做?例如,在 VScode 应用程序中,当您调整内容大小时,VScode UI 位置将保持不变。如何在PyQt6中实现这样的效果?

我已经尝试使用调整大小事件,但小部件没有随 UI 调整大小,也没有随位置调整大小。我也在 Youtube 上使用矩阵观看过,但是真的有必要构建可以调整大小的应用程序吗?

python user-interface pyqt screen-resolution pyqt6
1个回答
0
投票

您可以发布主窗口的代码并添加您现在拥有的内容以及您希望窗口执行的操作的图片吗?

无需过多了解您的窗口,您就可以使用 PyQt 附带的布局管理器之一,例如 QHBoxLayout 和 QVBoxLayout。然后你可以使用拉伸因子来保持相同的“长宽比”

例如:

# Resizing window

from PyQt6.QtWidgets import QWidget, QPushButton, QMainWindow, QApplication, QHBoxLayout, QVBoxLayout, QLabel
from PyQt6.QtGui import QColor, QPalette


class Color(QWidget):
    def __init__(self, color):
          super().__init__()
          self.setAutoFillBackground(True)

          
          palette = self.palette()
          palette.setColor(QPalette.ColorRole.Window, QColor(color))
          self.setPalette(palette)
          

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
     
       
        # Left Frame
        
        left_frame = Color('blue')
        left_frame_layout = QVBoxLayout()

        left_frame_layout.addWidget(QPushButton(text =  'click me'))
        left_frame_layout.addWidget(QLabel('this is the left frame'))

        left_frame.setLayout(left_frame_layout)


        # Right Frame
        
        right_frame = Color('green')
        right_frame_layout = QHBoxLayout()

        right_frame_layout.addWidget(QPushButton(text =  'click me'))
        right_frame_layout.addWidget(QLabel('this is the left frame'))

        right_frame.setLayout(right_frame_layout)
        

        # Main Frame
        main_layout = QHBoxLayout()

        main_layout.addWidget(left_frame,0)  # with a stretch factor of 0, this frame won't take any new avaible space when resizing horizontally
        main_layout.addWidget(right_frame,1) # stretch factor of 1.
    
        
        main_frame = QWidget()
        main_frame.setLayout(main_layout)
        self.setCentralWidget(main_frame)

     
app = QApplication([])
window = MainWindow()
window.show()
app.exec()

© www.soinside.com 2019 - 2024. All rights reserved.