pyQt5 学习笔记(2)基本窗口绘画

一、基本窗口的绘画

1. 示例:程序的基本结构

pyQt5 很方便的创建一个窗口,以下几行代码既可以创建一个基本的窗口,并设置了其大小,显示位置和标题:

import sys
from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':

    app = QApplication(sys.argv)   #sys.argv 是运行python脚本的时候 可以往程序输入参数
    w = QWidget()                  #创建窗口对象
    w.resize(250, 150)             #窗口大小
    w.move(300, 300)               #窗口位置:即运行程序后,窗口的坐标
    w.setWindowTitle('Simple')     #设置标题为:simple
    w.show()                       #显示窗口
    
    sys.exit(app.exec_())          #程序进入了循环

效果如下:
在这里插入图片描述
这个简单的程序演示了怎么设置一个窗口的名称等,pyQt还提供了设置窗口的图标,是否显示标题栏等等。

2. 创建多个控件

上一个程序创建了一个QWidget控件,同样的方法可以再创建一个:

import sys
from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':
    app = QApplication(sys.argv)  
    # 第一个控件
    w1 = QWidget()
    w1.resize(250, 150) 
    w1.move(300, 300) 
    w1.setWindowTitle('First ')
    w1.show()

    # 第二个控件
    w2 = QWidget()
    w2.resize(250, 150)
    w2.move(100, 200)
    w2.setWindowTitle('Second')
    w2.show()

    sys.exit(app.exec_())  # 程序进入了循环

效果如下所示:
在这里插入图片描述
可以看到我们创建了2个窗口,标题名为 Second 的窗口在 First 之上,可以知道pyQt默认后创建的控件在上层。

3. 控件的父子关系

指定控件的父子关系,方便统一管理。比如在一个对话框中,里面的拥有QButton,QLabel,QTextEdit控件可以作为这个对话框的子控件,这样当父控件(对话框)被销毁的时候,子控件也自动销毁,而且子控件会约束在父控件中。
上一段代码我们创建了两个空间,现在我们让其中一个作为子控件,另一个作为父控件:

import sys
from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':
    app = QApplication(sys.argv)

    # 父控件
    f = QWidget()
    f.resize(250, 150)
    f.move(100, 200)
    f.setWindowTitle('MainWindow')              #父控件坐标:原点(0,0)为屏幕的最左上角

    # 子控件
    s = QWidget()
    s.resize(50, 100)
    s.move(10, 10)                              #子控件坐标:原点(0,0)为父控件的最左上角
    s.setParent(f)                              #设置f为s的父控件
    s.setStyleSheet("background:red;")          #设置s这个控件的背景颜色为红色

    f.show()                                    #显示父控件,子控件也自动显示

    sys.exit(app.exec_())                       # 程序进入了循环

运行效果如下:
在这里插入图片描述
这段程序有以下几个知识点:

  1. 设置父子控件的代码为:s.setParent(f)
  2. 子控件没有设置标题栏,是因为没有作用,因为这个控件并没有标题栏,f控件是因为是顶层控件,所以系统自动给添加的,因为这是一个普通基本窗口都会有的结构。
  3. 通过设置控件的表来配置控件的背景颜色,当然,可以设置显示的文字像素大小,字体等,这里暂且不详说。

创建父控件还有另一种方便的方式,即在创建子控件时候,参数写入父控件,可一步完成创建控件和指定父控件的操作,程序如下所示:

import sys
from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':
    app = QApplication(sys.argv)

    # 父控件
    f = QWidget()
    f.resize(250, 150)
    f.move(100, 200)
    f.setWindowTitle('MainWindow')              #父控件坐标(0,0)为屏幕的最左上角

    # 子控件
    s = QWidget(f)                              #创建子控件s,并指定f为其父空间
    s.resize(50, 100)
    s.move(10, 10)                              #子控件坐标(0,0)为父控件的最左上角
    s.setStyleSheet("background:red;")          #设置s这个控件的背景颜色为红色

    f.show()                                    #显示父控件,子控件也自动显示

    sys.exit(app.exec_())                       # 程序进入了循环

这段程序使用 s=QWidget(f) 来指定f为s的父控件,所以也不再需要 s.setParent(f),注意到,每一个子控件可以指定一个父控件,也只能拥有一个父控件,如果重复指定,那么只有最后指定的父控件是有效的。

二、练习

设计一个简单的窗口,运行效果如下:
在这里插入图片描述

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton

if __name__ == '__main__':
    app = QApplication(sys.argv)

    # 父控件
    f = QWidget()
    f.resize(250, 150)
    f.move(100, 200)
    f.setWindowTitle('MainWindow')              #父控件坐标(0,0)为屏幕的最左上角

    redb = QPushButton('red', f)                #这是显示的文字为‘red’,指定父控件为f
    redb.setCheckable(True)
    redb.move(10, 10)
    redb.setStyleSheet("background:red;font-size:20px;")

    greb = QPushButton('green', f)
    greb.setCheckable(True)
    greb.move(100, 10)
    greb.setStyleSheet("background:green;font-size:10px;")

    f.show()                                    #显示父控件,子控件也自动显示

    sys.exit(app.exec_())                       # 程序进入了循环
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值