窗体MainWindow的属性设置3


  本章将主要介绍窗体 MainWindow控件的属性设置,例如控件名称、菜单栏、状态栏、工具栏等,本章节是在 窗体MainWindow的属性设置2基础上继续介绍。

1.窗体设置成不可伸缩

  在使用PyQt5创建图形用户界面(GUI)时,有时你可能希望窗口的尺寸保持固定,不允许用户通过拖动窗口边缘来改变窗口的大小。这可以通过设置窗口的布局和对话框的大小策略来实现,确保你的窗口在显示时保持一个固定的尺寸。这种方式有几个作用和概念:
  作用:
  用户体验一致性:固定窗口尺寸可以确保用户在使用应用程序时获得一致的体验,避免窗口尺寸的变化影响布局和功能。
  避免布局混乱:特别是在设计复杂界面时,动态改变窗口大小可能导致布局问题,从而影响控件的可见性和可用性。
  节省开发时间:限制窗口大小后,开发者可以专注于设计一个特定尺寸的布局,而不用考虑在不同尺寸下的表现。
  美观和实用:有些应用的用户界面设计是为特定尺寸量身定制的,不可缩放的窗口可以确保布局的美观性不会因用户操作而改变。
如何实现呢?可以从ui界面修改也可以从py文件修改。

(1)ui界面

  gepmetry后面现实的363×348就是界面的大小,这时候首先要把界面可伸展的最大最小值设成与窗口一样:

  同时需要把sizePolicy的水平策略和垂直策略设置为Fixed

(2)py文件

  新增的MainWindow.resize(561, 283)告诉我们界面的大小是多少,我们把它改成

MainWindow.setFixedSize(561, 283)`

例:

原始文件修改文件
MainWindow.reSize(1700, 800)MainWindow.setFixedSize(1700, 800)

原始文件:

def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.reSize(1700, 800)

修改文件:

def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.setFixedSize(1700, 800)

2.禁用最大最小化

  在使用 PyQt5 开发图形用户界面(GUI)应用程序时,有时可能希望禁用窗口的最大化和最小化功能。这通常是为了确保用户专注于应用程序的主要内容,而不会意外地改变窗口大小或位置。
  在 PyQt5 中,可以通过设置窗口的状态或窗口标志来实现这一点。

from PyQt5.QtCore import Qt

self.setWindowFlags(Qt.WindowCloseButtonHint)

  效果:

禁用最大化

  仍然显示最大化按钮只是不可用

self.setWindowFlags(Qt.WindowMinimizeButtonHint| Qt.WindowCloseButtonHint)
禁用最大最小化禁用最大化
Qt.WindowCloseButtonHint`Qt.WindowMinimizeButtonHint

3.窗口居中显示

  在PyQt5中,窗口居中显示通常是为了提高用户体验,使界面在视觉上更为平衡和美观。居中显示的窗口能够吸引用户的注意力,使其更容易集中在界面上的操作。同时,居中显示还可以避免因窗口偏移而导致的用户操作不便。
  窗口居中显示的实现概念
  获取屏幕尺寸:通过获取屏幕的分辨率,确定可用的显示区域。
  获取窗口尺寸:通过获取当前窗口的宽度和高度,确定其占据的空间。
  计算位置:通过简单的数学运算,计算出窗口左上角的坐标,使其居中显示。
  设置窗口位置:使用PyQt5提供的 API 将窗口移动到计算出的位置。

from PyQt5.QtWidgets import QDesktopWidget

self.center()

def center(self):
    screen_size = QDesktopWidget().screenGeometry()
    self.move(int((screen_size.width()-self.width())/2), int((screen_size.height()-self.height())/2))

4.窗口始终保持最前方显示

  在使用 PyQt5 创建图形用户界面(GUI)时,有时我们希望窗口始终保持在最前方,以便用户能够轻松地访问它。在 PyQt5 中,可以通过调用 setWindowFlag() 方法来实现这一点。具体来说,我们可以使用 Qt.WindowStaysOnTopHint 标志。

self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) 

5.子菜单功能

(1)退出界面

self.actionexit.triggered.connect(self.winclose)

def winclose(self):
    MainWindow.close()

  注:尽量避免定义函数与函数名相同(由于函数体与调用函数名字一样,可能会导致循环调用报错)
错误实例:

def close(self):
    MainWindow.close()

(2)最小化界面

self.min_win.clicked.connect(self.min_winow)

def min_winow(self):
    self.showMinimized()

  

6.打开弹窗不显示具体控件

PyQt5中,弹窗是一个对话框或小窗口,常用于与用户进行简单的交互,如显示消息、获取输入或确认操作。打开弹窗并不显示具体控件可能是由于几个原因。下面是一些概念和作用的解释,以及可能遇到的常见问题及解决方案。
  概念和作用:
  弹窗(Dialog): 用于与用户交互的窗口,通常包含按钮、文本框、标签等控件。
  控件: UI组件,例如按钮(QPushButton)、文本框(QLineEdit)、标签(QLabel)等,用于交互和数据显示。
  布局(Layout): 控件的组织方式,如垂直布局(QVBoxLayout)、水平布局(QHBoxLayout)等,用于控制控件的排列。
  添加以下语句:

def __init__(self):
    super(Ui_Form,self).__init__()
    self.setupUi(self)
    self.retranslateUi(self)

7.无边框界面实现可拖拽

  在PyQt5中,实现无边框窗口并支持拖拽移动的功能需要结合事件处理。无边框窗口通常用于自定义界面,例如游戏界面或其他应用程序,以获得更大的灵活性和不同于传统窗口的外观。
  只需要直接把两个函数复制粘贴不需要调用,这两个函数是原本自带的只不过是重写一遍

from PyQt5.QtCore import Qt

self.setWindowFlag(Qt.FramelessWindowHint)

self.offset = None  # 初始化偏移量

def mousePressEvent(self, event):
    if event.button() == Qt.LeftButton:
        self.offset = event.pos()

def mouseMoveEvent(self, event):
    if event.buttons() == Qt.LeftButton:
        self.move(event.globalPos() - self.offset)

一个按键实现界面拖拽

from PyQt5.QtCore import Qt

self.setWindowFlag(Qt.FramelessWindowHint)
self.btn_move.clicked.connect(self.winmove)

self.offset = QPoint(0, 0)  

def winmove(self):
    self.mouseMoveEvent()

def mouseMoveEvent(self, event):
    if event.buttons() == Qt.LeftButton:
        self.move(event.globalPos() - self.offset)

8.删除指定控件

tanwin.lay_out = tanwin.layout()
delete_label = tanwin.findChild(QtWidgets.QLabel, 'label1')
tanwin.lay_out.removeWidget(delete_label)
delete_label.deleteLater()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值