博客
关于我
PyQt5-基本窗口控件-QMainWindow
阅读量:796 次
发布时间: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/

你可能感兴趣的文章
Postman还能做Mock?又学了一招!
查看>>
Postman还能做Mock?又学了一招!
查看>>
Postman高阶技能:Collection集合批量运行!
查看>>
postMessage跨标签页共享数据
查看>>
Post表单提交TextArea的值出现转译乱码问题 - Spring MVC处理表单提交
查看>>
Power BI 中的 Python 可视化需要什么设置?任何特定的 matplotlib 包版本或系统设置?
查看>>
Power BI:如何在 Power Query 编辑器中将 Python 与多个表一起使用?
查看>>
power english (3) main text -emotion mastery - focus
查看>>
POWER ENGLISH (6) - MODEL
查看>>
power english (1) —— passion
查看>>
Power English (1) 原文
查看>>
power English (3)原文
查看>>
POWER ENGLISH(7)- repetition
查看>>
PowerDesigner使用教程:设置注释、默认值属性
查看>>
PowerDesigner使用教程:不显示背景网格
查看>>
PowerDesigner使用教程:创建数据模型以及导出
查看>>
PowerDesigner教程系列(二)概念数据模型
查看>>
Powerdesigner显示表的comment和列的comment的方法
查看>>
PowerDesigner最基础的使用方法入门学习
查看>>
PowerDesigner版本控制器设置权限
查看>>