音效素材网提供各类素材,打造精品素材网站!

站内导航 站长工具 投稿中心 手机访问

音效素材

PyQT5 QTDesigner窗口及组成的实现
日期:2021-09-08 14:00:35   来源:脚本之家

一、主窗口成员

主窗口中的菜单栏、工具栏和状态栏

1.菜单栏

我们可以直接在QTDesigner中输入菜单选项即可。这些菜单选项本质上都是动作,关于动作,在下面章节进行描述。

2.工具栏(动作)

要在工具栏中添加按钮,我们首先要在QTDesigner的菜单栏中选择视图-->动作编辑器,打开动作编辑器:

因为,能够用于工具栏的控件并不是普通的pushButton按钮,而是叫做Action的动作。

此时,我们就可以将需要的动作(Action)拖拽到工具栏中:

当然,我们可以自定义一些Action,并添加到工具栏中。

我们可以在鼠标右键中选择新建工具栏,从而创建多个工具栏(每个工具栏之间有4个竖点隔开):

注意:动作编辑器中的所有动作都是菜单栏和工具栏共用的。本质上说,工具栏就是菜单栏中功能的快捷按钮,方便用户使用。

二、窗口类型

我们在QTDesigner中新建窗口的时候,可以看到有以下几种窗口:

窗口大致分为三种,Main Window、Widget和Dialog。

Main Window:主窗口,其中包含菜单栏、工具栏、状态栏,是我们经常使用的窗口类型,一般用于程序的主窗口。

Dialog:对话窗口的基类,没有菜单栏、工具栏、状态栏,但可能有默认的一些操作按钮,例如确定、关闭等。

Widget:当我们不确定窗口用途的时候,可以使用Widget窗口。

三、关闭窗口的两种方式

第一种方式是发送信号调用主窗口的Close方法。

第二种方式是发送信号调用QApplication的quit方法(即退出整个程序)。

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget

from ui3 import Ui_MainWindow


class MyWindow(QMainWindow):
  def __init__(self):
    super(MyWindow, self).__init__()

  # 重写close槽函数
  def close(self):
    print("这里我们重写一下主窗口的close方法")
    super(MyWindow, self).close()

  # 调用App.quit()来退出程序
  def quitApp(self):
    app = QApplication.instance()
    print("退出整个程序")
    app.quit()


if __name__ == '__main__':
  # 创建一个App实例
  app = QApplication(sys.argv)
  # 创建一个主窗口
  mainWin = MyWindow()
  # 使用我们生成的UI窗口实例
  ui = Ui_MainWindow()
  # 将主窗口传递进去,让Ui_MainWindow帮我们向主窗口上放置组件
  ui.setupUi(mainWin)
  # 显示
  mainWin.show()

  # 主循环
  sys.exit(app.exec_())

其中close槽函数,对应主窗口原本的close方法(只是重写一下打印了一句话)。

quitApp是另一个槽函数,由另一个按钮触发,同样可以达到关闭窗口的效果(退出整个程序)。

下面附上自动生成的ui3.py的代码(就两个按钮,关联了两个槽函数):

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'ui3.ui'
#
# Created by: PyQt5 UI code generator 5.14.2
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
  def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(1264, 886)
    sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
    sizePolicy.setHorizontalStretch(1)
    sizePolicy.setVerticalStretch(0)
    sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
    MainWindow.setSizePolicy(sizePolicy)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.pushButton = QtWidgets.QPushButton(self.centralwidget)
    self.pushButton.setGeometry(QtCore.QRect(120, 130, 75, 23))
    self.pushButton.setObjectName("pushButton")
    self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
    self.pushButton_2.setGeometry(QtCore.QRect(280, 140, 75, 23))
    self.pushButton_2.setObjectName("pushButton_2")
    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QtWidgets.QMenuBar(MainWindow)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 1264, 23))
    self.menubar.setObjectName("menubar")
    MainWindow.setMenuBar(self.menubar)
    self.statusbar = QtWidgets.QStatusBar(MainWindow)
    self.statusbar.setObjectName("statusbar")
    MainWindow.setStatusBar(self.statusbar)

    self.retranslateUi(MainWindow)
    self.pushButton.clicked.connect(MainWindow.close)
    self.pushButton_2.clicked.connect(MainWindow.quitApp)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)

  def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
    self.pushButton.setText(_translate("MainWindow", "PushButton"))
    self.pushButton_2.setText(_translate("MainWindow", "PushButton"))

四、窗口坐标

通过以下方式可以获取窗口的坐标和尺寸:

# 使用一个按钮触发该槽函数,用于获取当前窗口的位置和尺寸
def getSizeOfMainWin(self):
  # 窗口左上角所在坐标
  print(self.x()) # 100
  print(self.y()) # 100
  # 整个窗口的宽和高
  print(self.width()) # 1264
  print(self.height()) # 886
  # 可用区域左上角所在坐标
  print(self.geometry().x()) # 101,说明可用区域左边有一个1px的边框
  print(self.geometry().y()) # 131,说明窗口上面的标题栏为31px(包含1px边框)
  # 整个窗口的宽和高,与self.width()、self.height()相同
  print(self.geometry().width()) # 1264
  print(self.geometry().height()) # 886

五、窗口和应用程序坐标

有以下两种方法可以设置窗口和应用程序坐标。

需要引入:from PyQt5.QtGui import QIcon

1.使用窗口对象的setWindowIcon方法

当使用窗口的setWindowIcon方法时,在Windows系统下才生效(在MAC中不能生效):

class MyWindow(QMainWindow):
  def __init__(self):
    super(MyWindow, self).__init__()
    self.initUI()

  def initUI(self):
    self.setWindowIcon(QIcon("icon.ico"))

效果:

2.使用QApplication实例的setWindowIcon方法

if __name__ == '__main__':
  # 创建一个App实例
  app = QApplication(sys.argv)
  app.setWindowIcon(QIcon("icon.ico"))
  
  # 创建一个主窗口
  mainWin = MyWindow()
  # 使用我们生成的UI窗口实例
  ui = Ui_MainWindow()
  # 将主窗口传递进去,让Ui_MainWindow帮我们向主窗口上放置组件
  ui.setupUi(mainWin)
  # 显示
  mainWin.show()
  # 主循环
  sys.exit(app.exec_())

这种方式对于Windows系统和MAC系统都生效。

到此这篇关于PyQT5 QTDesigner窗口及组成的实现的文章就介绍到这了,更多相关PyQT5 QTDesigner窗口内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

    您感兴趣的教程

    在docker中安装mysql详解

    本篇文章主要介绍了在docker中安装mysql详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编...

    详解 安装 docker mysql

    win10中文输入法仅在桌面显示怎么办?

    win10中文输入法仅在桌面显示怎么办?

    win10系统使用搜狗,QQ输入法只有在显示桌面的时候才出来,在使用其他程序输入框里面却只能输入字母数字,win10中...

    win10 中文输入法

    一分钟掌握linux系统目录结构

    这篇文章主要介绍了linux系统目录结构,通过结构图和多张表格了解linux系统目录结构,感兴趣的小伙伴们可以参考一...

    结构 目录 系统 linux

    PHP程序员玩转Linux系列 Linux和Windows安装

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,Linux和Windows安装nginx教程,具有一定的参考价值,感兴趣...

    玩转 程序员 安装 系列 PHP

    win10怎么安装杜比音效Doby V4.1 win10安装杜

    第四代杜比®家庭影院®技术包含了一整套协同工作的技术,让PC 发出清晰的环绕声同时第四代杜比家庭影院技术...

    win10杜比音效

    纯CSS实现iOS风格打开关闭选择框功能

    这篇文章主要介绍了纯CSS实现iOS风格打开关闭选择框,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作...

    css ios c

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的

    Win7给电脑C盘扩容的办法大家知道吗?当系统分区C盘空间不足时,就需要给它扩容了,如果不管,C盘没有足够的空间...

    Win7 C盘 扩容

    百度推广竞品词的投放策略

    SEM是基于关键词搜索的营销活动。作为推广人员,我们所做的工作,就是打理成千上万的关键词,关注它们的质量度...

    百度推广 竞品词

    Visual Studio Code(vscode) git的使用教程

    这篇文章主要介绍了详解Visual Studio Code(vscode) git的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...

    教程 Studio Visual Code git

    七牛云储存创始人分享七牛的创立故事与

    这篇文章主要介绍了七牛云储存创始人分享七牛的创立故事与对Go语言的应用,七牛选用Go语言这门新兴的编程语言进行...

    七牛 Go语言

    Win10预览版Mobile 10547即将发布 9月19日上午

    微软副总裁Gabriel Aul的Twitter透露了 Win10 Mobile预览版10536即将发布,他表示该版本已进入内部慢速版阶段,发布时间目...

    Win10 预览版

    HTML标签meta总结,HTML5 head meta 属性整理

    移动前端开发中添加一些webkit专属的HTML5头部标签,帮助浏览器更好解析HTML代码,更好地将移动web前端页面表现出来...

    移动端html5模拟长按事件的实现方法

    这篇文章主要介绍了移动端html5模拟长按事件的实现方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家...

    移动端 html5 长按

    HTML常用meta大全(推荐)

    这篇文章主要介绍了HTML常用meta大全(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    cdr怎么把图片转换成位图? cdr图片转换为位图的教程

    cdr怎么把图片转换成位图? cdr图片转换为

    cdr怎么把图片转换成位图?cdr中插入的图片想要转换成位图,该怎么转换呢?下面我们就来看看cdr图片转换为位图的...

    cdr 图片 位图

    win10系统怎么录屏?win10系统自带录屏详细教程

    win10系统怎么录屏?win10系统自带录屏详细

    当我们是使用win10系统的时候,想要录制电脑上的画面,这时候有人会想到下个第三方软件,其实可以用电脑上的自带...

    win10 系统自带录屏 详细教程

    + 更多教程 +
    ASP编程JSP编程PHP编程.NET编程python编程