以下是PySimpleGUI中常见功能元素和函数缩写形式的具体代码示例,涵盖基础控件、弹窗、窗口操作等场景,附带详细注释说明:
1. 基础元素缩写示例
文本与输入框
import PySimpleGUI as sglayout = [[sg.T("用户名:")], # sg.T 是 sg.Text 的缩写[sg.I(key="-USER-")], # sg.I 是 sg.Input 的缩写[sg.T("密码:")],[sg.I(key="-PASS-", password_char="*")], # 密码输入框
]window = sg.Window("登录界面", layout)
event, values = window.read()
window.close()print(f"用户名: {values['-USER-']}, 密码: {values['-PASS-']}")
按钮与复选框
layout = [[sg.B("提交", key="-SUBMIT-")], # sg.B 是 sg.Button 的缩写[sg.CB("记住密码", key="-REMEMBER-")], # sg.CB 是 sg.Checkbox 的缩写
]window = sg.Window("选项", layout)
event, values = window.read()
window.close()print(f"提交按钮被点击: {event == '-SUBMIT-'}")
print(f"记住密码: {values['-REMEMBER-']}")
2. 弹窗函数缩写示例
消息弹窗
sg.popup("操作成功!") # 基础弹窗
sg.popup_ok("确认删除?", title="警告") # 带OK按钮
sg.popup_yes_no("继续执行?") # 带Yes/No按钮# 获取用户输入
name = sg.popup_get_text("请输入姓名:")
print(f"输入的姓名: {name}")
文件选择弹窗
file_path = sg.popup_get_file("选择文件", file_types=(("文本文件", "*.txt"),))
print(f"选择的文件: {file_path}")folder_path = sg.popup_get_folder("选择文件夹")
print(f"选择的文件夹: {folder_path}")
3. 窗口操作示例
动态更新元素
layout = [[sg.T("状态:", key="-STATUS-")],[sg.B("开始", key="-START-"), sg.B("停止", key="-STOP-")],
]window = sg.Window("动态更新", layout)while True:event, values = window.read()if event == sg.WINDOW_CLOSED:breakelif event == "-START-":window["-STATUS-"].update("运行中...", text_color="green") # 更新文本和颜色elif event == "-STOP-":window["-STATUS-"].update("已停止", text_color="red")window.close()
非阻塞式读取
layout = [[sg.T("倒计时:"), sg.T("10", key="-COUNT-")], [sg.B("退出")]]
window = sg.Window("倒计时", layout)count = 10
while True:event, values = window.read(timeout=1000) # 每1秒读取一次if event == sg.WINDOW_CLOSED or event == "退出":breakcount -= 1window["-COUNT-"].update(str(count))if count == 0:sg.popup("时间到!")breakwindow.close()
4. 布局与快捷键示例
多列布局
left_col = [[sg.B("按钮1")], [sg.B("按钮2")]]
right_col = [[sg.T("右侧内容")]]layout = [[sg.Column(left_col), sg.Column(right_col)], # 使用 sg.Column 分列
]sg.Window("多列布局", layout).read(close=True)
快捷键绑定
layout = [[sg.I(key="-INPUT-", bind_return_key=True)], # 回车键触发事件[sg.B("提交", key="-SUBMIT-")],
]window = sg.Window("快捷键", layout)
while True:event, values = window.read()if event == sg.WINDOW_CLOSED:breakelif event == "-INPUT-" or event == "-SUBMIT-": # 回车或点击按钮均触发sg.popup(f"输入内容: {values['-INPUT-']}")window.close()
5. 进度条与通知示例
进度条
for i in range(100):sg.one_line_progress_meter("进度", i+1, 100, key="-METER-") # 显示进度条if not sg.one_line_progress_meter_cancel(): # 检查是否取消pass
右下角通知
sg.popup_notify("任务完成!", title="通知", location=(1000, 600)) # 自定义位置
总结
- 元素缩写:
sg.T
、sg.I
、sg.B
、sg.CB
等简化代码。 - 弹窗函数:
sg.popup
、sg.popup_get_text
等快速交互。 - 动态更新:通过
window[key].update()
实时修改界面。 - 布局技巧:使用
sg.Column
和sg.Frame
组织复杂界面。
这些示例覆盖了PySimpleGUI的核心功能,适合快速上手开发简单GUI应用。