pyqt5-基本窗口控件

简介: pyqt5-基本窗口控件

1.QMainWindow

QMainWindow 是应用程序框架 有自己的布局 也可以在布局中添加控件 比如工具栏菜单栏 状态栏等添加到布局管理器中

1.1窗口类型介绍

QMainWindow QWidget QDialog 这三个类都是用来创建窗口的 可以直接使用,也可以继承后再使用
QMainWindow 可以包含菜单栏 工具栏 状态栏 标题栏等 是最常见的窗口形式 
QDialog 是对话窗口的基类。对话框主要用来执行短期任务,或者与用户进行互动,它可以是模态的 也可以是非模态的,QDialog 没有菜单栏 工具栏 状态栏等等
使用方面:
    如果是主窗口 就是用QMainWindow 如果是对话窗,就使用QDialog类 如果不确定或者可能作为顶层窗口,也有可能嵌入到其他窗口中,那么就使用QWidget类

1.2创建主窗口

如果一个窗口包含一个或多个窗口,那么这个窗口就是父窗口,被包含的窗口就是子窗口。没有父窗口的窗口就是顶层窗口,QMainWindow就是一个顶层窗口,它可以包含很多界面元素。
在PyQt中 在主窗口 中会有一个空间占位符来占着中心窗口 可以使用setCentralWidget()来设置中心窗口

QMainWindow 继承自QWidget类 拥有它的所有派生方法和属性

其中比较重要的方法如

+ addToolBar() 添加工具栏

+ centralWidget() 返回窗口中心的一个控件 未设置时返回null

+ menuBar() 返回主窗口的菜单栏

+ setCentralWidget() 设置窗口中心控件

+ setStatusBar() 设置状态栏

+ statusBar() 获得状态栏对象后,调用状态栏对象的showMessage(message,int timeout=0)方法,显示状态栏信息你。其中第一个参数要显示的信息 第二个参数时信息停留的时间 单位是毫秒默认是0 表示一直显示状态栏信息。

from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5.QtGui import QIcon
class MainWindow(QMainWindow):
def __init__(self,parent=None):
super(MainWindow,self).__init__(parent)
        self.resize(400,200)
        self.status = self.statusBar()
        self.status.showMessage("这个时状态栏的显示时间是5000",5000)
        self.setWindowTitle("PyQt MainWindow例子")
if __name__ == "__main__":
import sys
    app  = QApplication(sys.argv)
    app.setWindowIcon(QIcon("./images/b822566318.ico"))
    mywin = MainWindow()
    mywin.show()
    sys.exit(app.exec_())

下面是窗口放在桌面中心的位置

from PyQt5.QtWidgets import QMainWindow,QApplication,QDesktopWidget
import sys
class winform(QMainWindow):
def __init__(self,parent=None):
super(winform,self).__init__(parent)
        self.setWindowTitle("主窗口放在屏幕中间例子")
        self.resize(270,270)
        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_())

下面是关闭装主窗口的例子

from PyQt5.QtWidgets import QMainWindow,QApplication,QWidget,QHBoxLayout,QPushButton
import sys
class WinForm(QMainWindow):
def __init__(self,parent=None):
super(WinForm,self).__init__(parent)
        self.setWindowTitle("关闭主窗口的例子")
        self.button = QPushButton("关闭窗口按钮")
        self.button.clicked.connect(self.onButtonClick)
        layout = QHBoxLayout()
        layout.addWidget(self.button)
        main_frame  = QWidget()
        main_frame.setLayout(layout)
        self.setCentralWidget(main_frame)
def onButtonClick(self):
        sender = self.sender()#发送信号的对象
print(sender.text()+"被按下了")
        qApp = QApplication.instance()
        qApp.quit()
if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = WinForm()
    form.show()
    sys.exit(app.exec_())

2 QWidget

基础窗口控件QWidget类是所有用户界面对象的积累,所有的窗口和空间都直接或间接继承自QWidget类
窗口控件(Widget 简称控件)是在PyQt中建立界面的主要元素。在PyQt中没有嵌入到其他控件中的控件为窗口一般窗口都有边框 标题栏。窗口是指程序的整体界面,可以包含标题栏 菜单栏 工具栏 关闭按钮 最小化按钮 最大化按钮等;控件是指按钮 复选框 文本框 表格 进度条等这些组成的基本元素。一个程序可以有多个窗口,一个窗口也可以有多个控件。

2.1窗口坐标系统

PyQt使用同一的坐标系统来定位窗口控件的位置和大小。如下图所示。

目录
相关文章
|
7月前
|
算法 API C++
【Qt UI】QT 窗口/控件置顶方法详解
【Qt UI】QT 窗口/控件置顶方法详解
560 0
|
存储 编解码 Cloud Native
C++ Qt关于多屏幕窗口处理
C++ Qt关于多屏幕窗口处理
|
API 计算机视觉
Qt实用技巧:自定义窗口标题栏
Qt实用技巧:自定义窗口标题栏
Qt实用技巧:自定义窗口标题栏
|
7月前
|
Python 容器
Tkinter:窗口控件配置
Tkinter:窗口控件配置
|
6月前
|
Linux API Python
tkinter用来创建简单的窗口和控件实现基本的用户界面
tkinter用来创建简单的窗口和控件实现基本的用户界面
|
4月前
|
API UED
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
544 4
|
4月前
【Qt 学习笔记】Qt窗口 | 浮动窗口 | QDockWidget的使用及说明
【Qt 学习笔记】Qt窗口 | 浮动窗口 | QDockWidget的使用及说明
392 3
|
4月前
|
UED
【Qt 学习笔记】Qt窗口 | 工具栏 | QToolBar的使用及说明
【Qt 学习笔记】Qt窗口 | 工具栏 | QToolBar的使用及说明
641 2
|
5月前
|
Python
PyQt5常见布局、控件用法有哪些?
这是关于Python GUI编程中使用的布局和控件的简要介绍: - **布局**: - `QHBoxLayout`:用于水平排列控件。 - `QVBoxLayout`:用于垂直排列控件。 - `QGridLayout`:在网格中排列控件,支持多行多列。 - `QFormLayout`:创建表单样式的布局,方便组织输入字段。
pyqt5 无边框窗口拖动
pyqt5 无边框窗口拖动

热门文章

最新文章