PyQt5学习笔记二----组件---窗口类介绍

15 篇文章 0 订阅

Qt5中窗口类型分为三类 QMainWindow、QWidget、QDialog。

  • QMainWindow:继承自QWidget,窗口包含菜单栏、工具栏、状态栏、标题栏等,是GUI主窗口。不能设置布局。

addToolBar()

添加工具栏

centralWidget()

返回窗口中心的一个控件,未设置时返回NULL

menuBar()

返回主窗口菜单栏

setCentralWidget()

设置窗口中心控件

statusBar()

获得状态栏对象,调用状态栏对象showMessage(msg,timeout)在状态栏显示消息。

参数一为显示的消息内容,参数二为显示几秒,单位为毫秒,默认0,表示一直显示该消息

案例1:在主窗口创建一个状态栏
# -*- coding: utf-8 -*-
import  sys
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()
        #将信息显示在状态栏,显示时间为5秒,之后消失
        self.status.showMessage("状态栏",5000)
        self.setWindowTitle("pyqt QMainWindow test")

if __name__=="__main__":
    app=QApplication(sys.argv)
    app.setWindowIcon(QIcon("./images/cartoon1.ico"))
    form=MainWindow()
    form.show()
    sys.exit(app.exec_())
    

案例二:将主窗口放在屏幕中间显示,并点击按钮关闭窗口
#将主窗口放在屏幕中间显示,并点击按钮关闭窗口
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import QDesktopWidget,QApplication,QMainWindow,QPushButton,QHBoxLayout,QWidget
import sys

class WinForm(QMainWindow):
    def __init__(self,parent=None):
        super(WinForm,self).__init__(parent)
        self.setWindowTitle("主窗口放在屏幕中间显示")
        self.resize(370,250)
        self.center()

        #添加一个button
        self.button1=QPushButton("按钮")
        #添加一个按钮的点击的信号与槽事件,在槽函数中获取QApplication类对象,
        #调用quit关闭窗口
        self.button1.clicked.connect(self.onButtonClick)

        layout=QHBoxLayout()
        layout.addWidget(self.button1)

        main_frame=QWidget()
        main_frame.setLayout(layout)
        self.setCentralWidget(main_frame)

    def center(self):
        #计算屏幕大小
        screen=QDesktopWidget().screenGeometry()
        #获得窗口大小
        size=self.geometry()
        self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)

    def onButtonClick(self):
        #获取发送对象--按钮控件
        sender=self.sender()
        print(sender.text()+"被按下")
        qApp=QApplication.instance()
        qApp.quit()

if __name__=="__main__":
    app=QApplication(sys.argv)
    win=WinForm()
    win.show()
    sys.exit(app.exec_())
  • QWidget: 适用于窗口类型暂不确定,或作为顶层窗口,或嵌入其他窗口中。是所有用户界面对象的基类。
  • QDialog:对话框基类,用来执行短期任务,或者与用户互动,显示方式分为模态、非模态。无菜单栏、工具栏、状态栏。

x()

y()

获得窗口左上角的坐标

width()

height()

获得客户区的宽度和高度

QWdiget提供的geometry()对象的函数x() y()

获取客户去左上角的坐标,

QWdiget提供的geometry()对象的函数width() height()

获得客户区的宽度与高度

QWdiget提供的frameGeometry()对象的函数x() y()

获得窗口左上角坐标

QWdiget提供的frameGeometry()对象的函数width() height()

获得包含客户区、标题栏和边框在内的整个窗口的宽度和高度

QWidget在边界客户区需要注意的地方:

  • QWidget不包含边框的常用函数

        不包含边框的部分是客户区,用户可以操作的地方,添加子控件。其位置是指在屏幕上的位置,在Qt中保存和使用的时QRect类。该类有自己的大小和位置

  1. 改变客户去面积:

    QWidget.resize(width,height)

    QWidget.resize(QSize)

  2. 获得客户区大小:QWidget.size()
  3. 获得客户去的宽度和高度:

    QWidget.width()

    QWidget.height()

  4. 获得客户去的宽度和高度

    QWidget.width()

    QWidget.height()

  5. 设置客户去的宽度和高度

    QWidget.setFixedWidth(int width) 高度不变

    QWidget.setFixedHeight(int height) 宽度不变

  6.  

    宽高都固定,不可以通过鼠标改变窗口宽高

     

    QWidget.setFixedSize(QSize size)

    QWidget.setFixedSize(int width,int height)

  7.  

    改变客户区大小

     

    Qwidget.setGeometry(int x,int y,int width,int height)

    QWidget.setGeometry(QRect rect)

  • 包含边框的常用函数

  1. 获得窗口大小和位置    QWidget.frameGeometry()
  2. 设置窗口位置

    QWidget.move(int x,int y)

    QWidget.move(QPoint point)

  3. 获得窗口左上角坐标     QWidget.pos()

案例一:屏幕坐标系统显示
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import QApplication,QPushButton,QWidget
import sys

app=QApplication(sys.argv)
widget=QWidget()
btn=QPushButton(widget)
btn.setText("Button")
#以QWidget左上角为(0,0)点
btn.move(20,20)
#不通的操作系统对窗口的最小宽度有规定,若设置宽度小于规定值,则会以规定值进行显示
widget.resize(300,200)
#以屏幕左上角为远点
widget.move(250,200)

widget.setWindowTitle("pyqt坐标系统")
widget.show()
print("w.x()=%d" % widget.x())
print("w.y()=%d" % widget.y())
print("w.width()=%d" % widget.width())
print("w.height()=%d" % widget.height())

print("QWidget.geometry")

print("w.geometry().x()=%d" % widget.geometry().x())
print("w.geometry().y()=%d" % widget.geometry().y())
print("w.geometry().width()=%d" % widget.geometry().width())
print("w.geometry().height()=%d" % widget.geometry().height())

sys.exit(app.exec_())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值