Python Qt GUI设计:QMainWindow、QWidget和QDialog窗口类(基础篇—10)

QMainWindow、QWidget和QDialog三个类都是用来创建窗口的,可以直接使用,也可以继承后再使用,在Qt Designer创建UI文件可以选择这三种窗口类型。

如果是主窗口,就使用QMainWindow类,如果是对话框,就使用QDialog类,如果不确定,或者有可能作为顶层窗口,也有可能嵌入到其他窗口中,那么就使用QWidget类。 

让我们看看具体区别吧\~

1、 QMainWindow窗口

QMainWindow主窗口为用户提供一个应用程序框架,它有自己的布局,可以在布局中添加控件。在主窗口中可以添加控件,比如将工具栏、菜单栏和状态栏等添加到布局管理器中。

QMainWindow类中比较重要的方法如下表所示:

QMainWindow有自己的布局不能设置布局(使用setLayout()方法)。

聊一个实用功能,当主窗口打开运行后,实现默认电脑屏幕居中,效果如下所示:

实现代码如下所示:

```python from PyQt5.QtWidgets import QDesktopWidget, QApplication ,QMainWindow import sys

class Winform( QMainWindow):

def __init__(self, parent=None):
    super( Winform, self).__init__(parent)

    self.setWindowTitle('主窗口放在屏幕中间例子')  
    self.resize(370,  250)  
    self.center()  

def center(self):  
    screen = QDesktopWidget().screenGeometry()  
    size = self.geometry()        
    self.move((screen.width() - size.width()) / 2,  (screen.height() - size.height()) / 2)

if name == "main": app = QApplication(sys.argv)
win = Winform()
win.show()
sys.exit(app.exec_())
```

以下语句用来设置QWidget窗口的大小,宽度为370像素,高度为250像素。

python self.resize(370, 250)

以下语句用来计算显示屏幕的大小:(screen.width()*screen.height()),其中\ QDesktopWidget是描述显示屏幕的类,通过QDesktopWidget().screenGeometry()来获得屏幕的大小。

python screen = QDesktopWidget().screenGeometry()

以下语句用来获取QWidget窗口的大小:(size.width()*size.heiget())。

python size = self.geometry()

以下语句将窗口移动到屏幕中间。

python self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2)

2、QWidget窗口

基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口和控件都直接或间接继承自QWidget类。

窗口控件(Widget,简称“控件”)是在PyQt中建立界面的主要元素。在PyQt中把没有嵌入到其他控件中的控件称为窗口,一般窗口都有边框、标题栏。窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最小化按钮、最大化按钮等;控件是指按钮、复选框、文本框、表格、进度条等这些组成程序的基本元素。一个程序可以有多个窗口,一个窗口也可以有多个控件。

在Qt官方提供的帮助文档中:“Qt 5.14 Qt Widgets Window and Dialog Widgets”,可见QWidget几何结构如下所示:

从上图可以看出,这些成员函数分为三类:

  • QWidget直接提供的成员函数: x()、y()获得窗口左上角的坐标,width()、 height()获得客户区的宽度和高度;
  • QWidget的geometry()提供的成员函数:x()、y()获得客户区左上角的坐标,width()、 height()获得客户区的宽度和高度;
  • Widget的frameGeometry()提供的成员函数:x()、y()获得窗口左上角的坐标,width()、 height()获得包含客户区、标题栏和边框在内的整个窗口的宽度和高度。

而且可以知道QWidget有两种常用的几何结构:

  • 不包含外边各种边框的几何结构;
  • 包含外边各种边框的几何结构。

1、QWidget不包含边框的常用函数

一般情况下,不包含边框的部分是客户区,这里面就是我们正常操作的地方,可以添加子控件。这部分是一个长方形,会有大小和位置。大小就是指

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_44079197

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值