python之pygame,pyqt

pygame,pyqt以及简单机器学习

2.pygame入门

展示窗体

•图形化界面程序都是阻塞式的

•通常阻塞的实现策略就是死循环

在这里插入图片描述

窗体关闭

•pygame.event.get()提供事件的清单

•event.type指明了事件的类型

•pygame.locals模块提供了常量

•QUIT就是窗体关闭事件

显示图片

在这里插入图片描述

键盘事件

•event.type 为KEYDOWN为按下

•event.type 为KEYUP为抬起

•event.key为操作的按键,对应常量K_按键符号

文字显示

在这里插入图片描述

声音播放

在这里插入图片描述

在这里插入图片描述

FPS

在这里插入图片描述

Surface

Surface理解基础

•Pygame渲染的单元surface

•Window

•Image

•Text

•Surfaceblit Surface

Surface常见的API

•fill()

•blit()

•get_width()

•get_height()

•get_rect()

3.PyQt的介绍

1.PyQt是一套Python的GUI开发框架

2.GUI是Graphical User Interface的英文简称,即图形用户界面.

是指采用图形方式显示的计算机操作用户界面.

PyQt5的主要模块

1.QtCore:包含了核心的非GUI的功能.主要和时间,文件,与文件夹,各种数据,流,URLS,mime类文件,进程与线程一起使用

2.QtGui:包含了窗口系统,时间处理,2D图像,基本绘画,字体和文件类.

3.QtWidgets:包含了一系列创建追哦面应用的UI元素.

常见窗口控件的使用场景

1.如果是主窗口,就使用QMainWindow类

2.如果是对话框,就使用QDialog类

3.如果不确定,或者有可能作为顶层窗口,也有可能嵌入到其它窗口中,那么就使用QWidget类

将窗口移动到指定位置

# 获取屏幕尺寸
screen = QDesktopWidget().screenGeometry()
# 获取窗口尺寸
size = widget.geometry()
# 移动到指定位置
# widget.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)
widget.move(20,30)

气泡提示

•设置气泡需要用到下面这个方法:setToolTip(msg)

widget.setToolTip('这是一个QQ窗口')

文本

•文本是通过QLabel实现的.

•QLabel可以显示不可编辑的文本或图片,也可以放置一个GIF动画

•QFont开设置字体样式和字体大小

# 设置窗口标题
widget.setWindowTitle('文本框')
# 创建QLineEdit
edit = QLineEdit()
# 设置提示文字
# edit.setPlaceholderText('请输入QQ')
# 设置文本
edit.setText('12345999')
# 设置提示信息
widget.setToolTip('这是文本框')
# 设置输入框模式
# edit.setEchoMode(QLineEdit.NoEcho)
# edit.setEchoMode(QLineEdit.Password)
edit.setEchoMode(QLineEdit.PasswordEchoOnEdit)
# 设置最大长度
edit.setMaxLength(15)
# 显示设置父窗体
edit.setParent(widget)

图片展示

# 创建label
label = QLabel()
# 创建pixMap
map=QPixmap('电脑图片.png')
# 设置图片
label.setPixmap(map)
# 显示设置父窗体
label.setParent(widget)

文本框控件

•文本框也就是输入框

•QLineEdit是单行文本输入框

•QTextEdit是多行文本输入框

# 创建多行文本框
# edit = QLineEdit()
edit = QTextEdit()
edit.setPlaceholderText('请输入多行文字')
# 输入文字
edit.setPlainText('总冠军')
# 显示
edit.setParent(widget)
# 展示窗口
widget.show()

按钮控件

•常见的按钮实现类包括:QPushButton、QRadioButton和QCheckBox

widget.setWindowTitle('QPushButton案例')
# 创建按钮
button=QPushButton()
# 新建按钮
button.setText('发送')
# 设置气泡
button.setToolTip('这是一个发送的按钮')
# 显示
button.setParent(widget)

信号和槽

•信号和槽机制是QT 的核心机制,它是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性

信号

•当对象的状态发生改变的时候,信号就由该对象发射(emit) 出去

•当一个信号被发射(emit),与其关联的槽函数被立刻执行,发射该信号的对象并不知道是那个对象在接收这个信号。这样保证了对象与对象之间的低耦合。

•如果信号和多个槽函数相关联,当信号被发射时,这些槽的执行顺序将会是随机的、不确定的。

•用于接受信号,而且槽只是普通的成员函数。当和槽连接的信号被发射时,槽会被调用。

•一个槽并不知道是否有任何信号与自己相连接。

信号和槽的绑定

•通过调用QObject 对象的 connect 函数来将对象的信号与另外一个对象的槽函数相关联,当发射者发射信号时,接收者的槽函数将被调用

# 槽函数
def showmsg():
    # 获取发送者
    sender = widget.sender()
    print(sender.text())
    print(sender)
    print('hello')
    # 修改按钮文字为发送邮件
    sender.setText('发送邮件')
# 创建应用程序
app = QApplication(sys.argv)
# 设置程序图标
app.setWindowIcon(QIcon('qq.png'))
# 创建窗口控件
widget = QWidget()
# 设置窗口大小
widget.resize(300, 400)
# 设置窗口标题
widget.setWindowTitle('QQ窗口')
# 创建按钮
button = QPushButton()
# 设置按钮
button.setText('按钮')
# 将信号和槽函数连接
button.clicked.connect(showmsg)
# 显示
button.setParent(widget)

点击按钮,关闭窗口

# 定义Qt槽函数
def close():
    print('关闭窗口')
    app.quit()

布局

•一个pyqt窗口中可以有多个控件

•所谓布局,指的就是多个控件在窗口中的展示方式

•布局方式大致分为:绝对布局、水平布局、竖直布局、网格布局、表单布局

布局方法

•布局中可以添加控件,使用addWidget()方法

•布局中也可以再添加布局,使用addLayout()方法

•水平布局(QHBoxLayout)和竖直布局(QVBoxLayout)都称为框布局

QHBoxLayout

# 创建布局
layout = QHBoxLayout()

for ele in range(1,6):
    # 创建按钮
    btn = QPushButton()
    btn.setText(str(ele))
    # 把按钮添加到布局中
    if ele ==2 :
        layout.addWidget(btn,0,Qt.AlignBottom)
    else:
        layout.addWidget(btn)
# 把布局放到窗口中
widget.setLayout(layout)

addStretch 伸缩量

•布局时要用到addStretch函数,设置stretch伸缩量后,按比例分配剩余控件

表单布局QFormLayout

•表单布局是label-field式的表单布局,顾名思义,就是实现表单方式的布局

•表单布局添加控件的方法为addRow(label,widget)

# 创建布局
layout = QFormLayout()
# 添加控件
layout.addRow(QLabel('姓名'),QLineEdit())
layout.addRow(QLabel('年纪'),QLineEdit())
layout.addRow(QLabel('电话'),QLineEdit())
 
# 显示布局
widget.setLayout(layout)

对话框控件

•对话框是为了更好地实现人与程序的交互

•对话框主要是完成特定场景下的功能,比如删除确认等

•QDialog的子类有:QMessageBox、QFileDialog、QFontDialog.QInputDialog等

def deal():
    print('点击了按钮')
    # 参数1:显示在哪个窗体中
    # 参数2:标题
    # 参数3:提示内容
    # 参数4:按钮个数
    # 参数5:默认按钮选中
    QMessageBox.information(widget,'提示','你确定要删除吗?',QMessageBox.Ok|QMessageBox.Cancel,QMessageBox.Ok)

# 创建应用程序 需要加上参数  固定写法
app = QApplication(sys.argv)

# 创建窗口
widget = QWidget()

# 修改窗口大小
widget.resize(300,400)
# 设置窗口的标题
widget.setWindowTitle('对话框')

# 创建按钮
btn = QPushButton()
btn.setText('显示对话框')
# 处理按钮点击事件
btn.clicked.connect(deal)

# 显示按钮
btn.setParent(widget)

单选框

•QRadioButton是单选按钮,它提供了一组可供选择的按钮和文本标签,用户可以选择其中一个选项

•标签用于显示对应的文本消息

•单选框选中的信号是:toggled

发布了40 篇原创文章 · 获赞 3 · 访问量 1396

猜你喜欢

转载自blog.csdn.net/hongge_smile/article/details/104242043