PySimpleGUI 库
PySimpleGUI 是一个用于简化 GUI 编程的 Python 包,它封装了多种底层 GUI 框架(如 tkinter、Qt、WxPython 等),提供了简单易用的 API。PySimpleGUI 包含了大量的控件(也称为小部件或组件),这些控件可以帮助你快速构建用户界面
安装
pip install pysimplegui == 4.70.1
布局和窗口
import PySimpleGUI as sg
# 定义布局
layout = [
[sg.Text('你好')],
[sg.Button('关闭')]
]
# 创建窗口
window = sg.Window('我的窗口', layout)
# 事件循环
while True:
event, values = window.read()
# 点击X和退出按钮,关闭窗口
if event in (None, "关闭"):
break
# 关闭窗口
window.close()
文本输入输出案例
import PySimpleGUI as sg
# 定义布局
layout = [
[sg.Text("编号:", size=(10, 1)), sg.InputText()],
[sg.Text(key="text")],
[sg.Button('保存'),sg.Button('关闭')]
]
# 创建窗口
window = sg.Window('我的窗口', layout)
# 事件循环
while True:
event, values = window.read()
# 获取编号
id = values[0]
if event == '保存':
print(f'id={id}')
sg.popup(f'id={id}')
# 更新文本
window['text'].update('新的文本内容')
if event == sg.WIN_CLOSED or event == '关闭':
break
# 关闭窗口
window.close()
视频处理
import PySimpleGUI as sg
import cv2
def rendVideo():
# 读取视频
cap = cv2.VideoCapture(0)
#界面布局
layout =[
[
sg.Button("退出", size=(10, 1))
],
[sg.Image(key='image')],
]
#创建一个window对象
#location 视频位置
#size 视频大小
window =sg.Window("视频播放",layout,location=(350,50),size=(800,500))
# 开始人脸录入
while cap.isOpened():
event, values = window.read(timeout=10)
ret,frame = cap.read()
if ret:
#把数据帧对象转换成bytes数据类型,更新窗口对象window信息
imgbyts = cv2.imencode('.png', frame)[1].tobytes()
window['image'].update(data=imgbyts)
#点击X和退出按钮,关闭窗口
if event in (None,"退出"):
break
#关闭窗口
window.close()
cap.release()
if __name__ =="__main__":
rendVideo()
图片上传
import PySimpleGUI as sg
def main():
# 设置主题
sg.theme('LightBlue')
# 布局定义
layout = [
[sg.Text('请选择一张图片:')],
[sg.Input(key='-FILE-', enable_events=True), sg.FileBrowse(file_types=(("Image Files", "*.png;*.jpg;*.jpeg;*.gif"),))],
[sg.Button('退出')],
[sg.Image(key='-IMAGE-')]
]
# 创建窗口
window = sg.Window('图片上传示例', layout)
while True:
event, values = window.read()
# 处理事件
if event in (sg.WINDOW_CLOSED, '退出'):
break
elif event == '-FILE-':
# 更新图片
image_path = values['-FILE-']
print(image_path)
if image_path:
window['-IMAGE-'].update(filename=image_path)
window.close()
if __name__ == '__main__':
main()