博客
关于我
PyQt5-基本窗口控件-QMainWindow
阅读量:797 次
发布时间:2023-03-05

本文共 2675 字,大约阅读时间需要 8 分钟。

PyQt5基础入门——窗口与布局

1. QMainWIndow与QDialog的区别

在PyQt5中,QMainWindow和QDialog是两种常见的窗口类。QMainWindow主要用于创建主窗口,通常具有菜单栏、工具栏和状态栏等功能,而QDialog则用于创建对话框,通常不包含这些功能。QDialog适用于需要与用户进行短期互动的场景。

2. 创建主窗口的步骤

创建QMainWindow时,需要注意以下几点:

  • 不使用setLayout:QMainWindow内部已经有自己的布局系统,不建议通过setLayout来设置布局。
  • 设置窗口大小:可以通过resize方法设置窗口的大小。
  • 状态栏的使用:可以通过self.statusBar()获取并设置状态栏。
  • 窗口居中:可以通过center()方法将窗口居中显示。

以下是一个创建主窗口的示例代码:

import sysfrom PyQt5.QtWidgets import (QMainWindow, QApplication, QDesktopWidget, QPushButton)class MainWindow(QMainWindow):    def __init__(self, parent=None):        super().__init__(parent)        self.resize(200, 300)        self.status = self.statusBar()        self.setWindowTitle('窗体标题!')        self.status.showMessage("状态栏", 5000)        self.center()    def center(self):        deskSize = QDesktopWidget().screenGeometry()        windowSize = self.geometry()        self.move((deskSize.width() - windowSize.width()) / 2,                 (deskSize.height() - windowSize.height()) / 2)if __name__ == "__main__":    app = QApplication(sys.argv)    window = MainWindow()    window.show()    sys.exit(app.exec_())

3. 窗口布局与定位

3.1 获取窗口坐标

  • x(), y():获取窗口左上角的坐标。
  • width(), height():获取窗口的宽度和高度。
  • geometry():返回包含客户区的矩形区域。
  • frameGeometry():返回包含窗口边框在内的完整矩形区域。

3.2 调整窗口大小和位置

  • resize(width, height):调整客户区的大小。
  • move(x, y):调整窗口的位置。
  • setFixedSize(QSize):固定窗口的大小。
  • setFixedWidth(int) 和 setFixedHeight(int):固定窗口的宽度或高度。

4. 窗口与按钮的连接

为了实现点击按钮关闭窗口的功能,可以使用信号和槽的方式进行关联。以下是一个实现关闭窗口的示例代码:

import sysfrom PyQt5.QtWidgets import (QMainWindow, QApplication, QPushButton, QHBoxLayout, QWidget)class MainWindow(QMainWindow):    def __init__(self, parent=None):        super().__init__(parent)        self.resize(200, 300)        self.setWindowTitle("关闭窗口")        self.center()        self.btn = QPushButton("关闭")        self.btn.clicked.connect(self.onBtnClickCloseWin)        layout = QHBoxLayout()        layout.addWidget(self.btn)        widget = QWidget()        widget.setLayout(layout)        self.setCentralWidget(widget)    def center(self):        deskSize = QDesktopWidget().screenGeometry()        windowSize = self.geometry()        self.move((deskSize.width() - windowSize.width()) / 2,                 (deskSize.height() - windowSize.height()) / 2)    def onBtnClickCloseWin(self):        sender = self.sender()        appInstance = QApplication.instance()        appInstance.quit()if __name__ == "__main__":    app = QApplication(sys.argv)    mainWindow = MainWindow()    mainWindow.show()    sys.exit(app.exec_())

5. 总结

  • QApplication:PyQt5程序的入口点,确保程序正确退出。
  • QWidget:所有用户界面组件的基类,包括窗口和控件。
  • show():显示窗口。
  • setWindowTitle:设置窗口标题。
  • sys.exit(app.exec_()):确保程序退出。

通过以上知识,可以更好地理解并使用PyQt5进行窗口开发。如果需要进一步学习,可以参考PyQt5的官方文档或相关学习资料。

转载地址:http://pdafk.baihongyu.com/

你可能感兴趣的文章
propertyGrid
查看>>
propertyPlaceholderConfigurer读取配置文件
查看>>
PyTorch-Tutorials【pytorch官方教程中英文详解】- 5 Build Model
查看>>
proteus三输入与非门名字_proteus 元件名称对照表
查看>>
Protobuf - 语法、字段使用规则、注意事项
查看>>
protobuf —— 快速上手
查看>>
protobuf —— 认识和安装
查看>>
Protobuf 三个关键字required、optional、repeated的理解
查看>>
ProtoBuf 原理详解
查看>>
Protobuf 实例(java)
查看>>
ProtoBuf 实际应用(java)
查看>>
Protobuf 属性解释
查看>>
Protobuf 编译工具转换 Java 类
查看>>
protobuf使用详解
查看>>
ProtoBuf在使用protoc进行编译时提示: Required fields are not allowed in proto3
查看>>
Protobuf学习 - 入门
查看>>
protobuf对象与JSON相互转换
查看>>
ProtoBuf的介绍以及在Java中使用protobuf将对象进行序列化与反序列化
查看>>
protocol学习笔记001---RPC和HTTP协议之间的区别_与各自优势
查看>>
protostuff简单应用
查看>>