我正在使用PyQt5创建GUI应用程序,我使用QtDesigner创建了UI,结果如下:
但这个问题是,当我使用Python启动应用程序时,按照我使用的屏幕大小,应用程序没有正确显示:在我的笔记本电脑上(我从上面的QtDesigner屏幕截图中获取),结果如下:
(白色部分只是为了使矩形显示不正确而更清晰)
正如你所看到的,左侧栏在我的笔记本电脑上没有正确显示,但在更大的屏幕上,它显示得非常完美,因此我假设屏幕的大小是错误因素,但我不知道如何修复它。为了避免尺寸问题,我是否必须确保使用任何选项
以下是您可以用来获得最小可复制示例的代码:
QtDesigner生成的代码如下所示:
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'main_mreZokVTK.ui'
##
## Created by: Qt User Interface Compiler version 5.14.1
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import (QCoreApplication, QMetaObject, QObject, QPoint,
QRect, QSize, QUrl, Qt)
from PySide2.QtGui import (QBrush, QColor, QConicalGradient, QCursor, QFont,
QFontDatabase, QIcon, QLinearGradient, QPalette, QPainter, QPixmap,
QRadialGradient)
from PySide2.QtWidgets import *
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(1200, 800)
MainWindow.setMinimumSize(QSize(1200, 800))
MainWindow.setMaximumSize(QSize(1200, 800))
font = QFont()
font.setPointSize(8)
MainWindow.setFont(font)
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget")
self.verticalLayout = QVBoxLayout(self.centralwidget)
self.verticalLayout.setSpacing(0)
self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout.setContentsMargins(10, 10, 10, 10)
self.drop_shadow_frame = QFrame(self.centralwidget)
self.drop_shadow_frame.setObjectName(u"drop_shadow_frame")
self.drop_shadow_frame.setEnabled(True)
font1 = QFont()
font1.setPointSize(2)
font1.setBold(False)
font1.setWeight(50)
self.drop_shadow_frame.setFont(font1)
self.drop_shadow_frame.setStyleSheet(u"background-color:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(13, 13, 13, 255), stop:0.972851 rgba(103, 103, 103, 255));\n"
"border-radius: 10px\n"
"")
self.drop_shadow_frame.setFrameShape(QFrame.NoFrame)
self.drop_shadow_frame.setFrameShadow(QFrame.Raised)
self.lateral_bar = QFrame(self.drop_shadow_frame)
self.lateral_bar.setObjectName(u"lateral_bar")
self.lateral_bar.setGeometry(QRect(0, 0, 90, 781))
self.lateral_bar.setMinimumSize(QSize(90, 781))
self.lateral_bar.setMaximumSize(QSize(90, 781))
self.lateral_bar.setStyleSheet(u"background-color:rgb(20, 20, 20);\n"
"background-color:#000000")
self.lateral_bar.setFrameShape(QFrame.NoFrame)
self.lateral_bar.setFrameShadow(QFrame.Raised)
self.verticalLayout_2 = QVBoxLayout(self.lateral_bar)
self.verticalLayout_2.setSpacing(0)
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.fonctions = QFrame(self.lateral_bar)
self.fonctions.setObjectName(u"fonctions")
self.fonctions.setMinimumSize(QSize(90, 691))
self.fonctions.setMaximumSize(QSize(90, 691))
self.fonctions.setFrameShape(QFrame.StyledPanel)
self.fonctions.setFrameShadow(QFrame.Raised)
self.verticalLayout_4 = QVBoxLayout(self.fonctions)
self.verticalLayout_4.setObjectName(u"verticalLayout_4")
self.Raffles = QFrame(self.fonctions)
self.Raffles.setObjectName(u"Raffles")
self.Raffles.setFrameShape(QFrame.StyledPanel)
self.Raffles.setFrameShadow(QFrame.Raised)
self.btn_raffles = QPushButton(self.Raffles)
self.btn_raffles.setObjectName(u"btn_raffles")
self.btn_raffles.setGeometry(QRect(0, 0, 70, 163))
self.btn_raffles.setMinimumSize(QSize(0, 0))
self.btn_raffles.setMaximumSize(QSize(1000, 8000))
font2 = QFont()
font2.setFamily(u"MS Sans Serif")
font2.setPointSize(1)
self.btn_raffles.setFont(font2)
self.btn_raffles.setLayoutDirection(Qt.LeftToRight)
self.btn_raffles.setStyleSheet(u"QPushButton {\n"
" border-radius:8px;\n"
" background-color:none;\n"
" border:2px solid rgb(45, 45, 45);\n"
" \n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color:rgb(20, 20, 20);\n"
" border:2px solid rgb(255, 255, 255)\n"
"}\n"
"")
self.btn_raffles.setIconSize(QSize(64, 64))
self.verticalLayout_4.addWidget(self.Raffles)
self.verticalLayout_2.addWidget(self.fonctions)
self.verticalLayout.addWidget(self.drop_shadow_frame)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QMetaObject.connectSlotsByName(MainWindow)
# setupUi
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
self.btn_raffles.setText("")
# retranslateUi
用于显示应用程序的代码如下所示:
from PySide2 import QtCore
from PySide2.QtCore import (QTime, Qt)
from PySide2.QtGui import (QPixmap)
from PySide2.QtWidgets import *
from PyQt5.QtCore import QThreadPool, QRunnable, pyqtSlot, pyqtSignal, QTimer
import sys
import PyQt5
from ui_main_mre import Ui_MainWindow
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
主要的问题是,您正在向小部件(QFrames)添加按钮,并且没有在那里设置任何布局。使用固定几何图形几乎从来都不是一个好主意,而在具有其他布局管理器的UI中这样做几乎总是一个非常糟糕的主意。
记住,你在屏幕上看到的几乎是别人在屏幕上看到的;此外,设计器并不总是在预览中显示实际结果。在您的特定情况下,问题在于当您的代码加载ui时,按钮实际上有点移位,因此它们的内容部分隐藏,因为它们的父级大小(子窗口小部件不能在父级的rect之外绘制)
因此,首先,为包含按钮的所有Qframe(以及任何其他仍然没有布局的小部件)设置布局,如果您的问题是确保按钮占用其容器的整个可用空间,那么将其水平和最重要的垂直大小策略设置为
Preferred
(默认情况下,Qt按钮不垂直展开)然后,您的实现还存在其他问题:
相关问题 更多 >
编程相关推荐