之前分享了(国产可视化Python工具 PyMe 初体验:拖拖拽拽做桌面应用),PyMe解决了用拖拽(可视化)的方式设计UI,其封装了 tkinter,在编写PyMe事件代码时可能需要调用PyMe封装的API函数,本文主要分享PyMe封装的API接口,以供大家开发应用程序参考。
注:本文API对应的PyMe版本为“PythonIDE-PyMe-1.5.1.6”。
功能:运行PyMe工程,启动主界面
参数:
uiClass:界面类名deiconify:是否显示窗口 (bool)projName:项目名称InitCheckFunc:初始化检查函数返回值:无
示例:
if __name__ == '__main__': Fun.RunApplication(stock_holders)功能:销毁指定界面
参数:
uiName:界面类名result:返回值animation:销毁动画('fadeout'或'zoomout')返回值:无
示例:
Fun.DestroyUI("stock_holders", 0, "fadeout")功能:获取指定控件的实例
参数:
uiName:界面类名elementName:控件名称(支持别名)返回值:控件对象或None
示例:
button = Fun.GetElement("stock_holders", "button_query")功能:判断界面是否存在
参数:
uiName:界面类名返回值:bool
示例:
if Fun.IsUIExist("stock_holders"): print("界面已存在")功能:设置控件显示或隐藏
参数:
uiName:界面类名elementName:控件名称Visible:True显示,False隐藏返回值:无
示例:
Fun.SetVisible(uiName, "listbox_holders", True)功能:设置控件可用或禁用
参数:
uiName:界面类名elementName:控件名称Enable:True可用,False禁用返回值:无
示例:
Fun.SetEnable(uiName, "button_query", False)功能:设置窗口标题
参数:
uiName:界面类名title:标题文字返回值:无
示例:
Fun.SetWindowTitle(uiName, "十大股东查询系统")功能:设置窗口透明度
参数:
uiName:界面类名alpha:透明度值(0-255)返回值:无
示例:
Fun.SetWindowTransparency(uiName, 200)功能:设置控件的文本内容
支持控件:Label、Button、RadioButton、CheckButton、Entry、Text、ComboBox、SpinBox
参数:
uiName:界面类名elementName:控件名称textValue:文本内容返回值:无
示例:
Fun.SetText(uiName, "input_code", "sz000001")Fun.SetText(uiName, "label_status", "查询成功")功能:获取控件的文本内容
参数:
uiName:界面类名elementName:控件名称返回值:字符串
示例:
code = Fun.GetText(uiName, "input_code")date = Fun.GetText(uiName, "input_date")功能:设置控件背景色
参数:
uiName:界面类名elementName:控件名称RGBColor:颜色值(如"#FFFFFF")返回值:无
示例:
Fun.SetBGColor(uiName, "button_query", "#5D9CEC")功能:设置控件文字颜色
参数:
uiName:界面类名elementName:控件名称RGBColor:颜色值返回值:无
示例:
Fun.SetTextColor(uiName, "label_status", "#ED5565")功能:设置控件字体
参数:
uiName:界面类名elementName:控件名称fontName:字体名称fontSize:字体大小fontWeight:字重('normal'/'bold')fontSlant:倾斜('roman'/'italic')fontUnderline:下划线(0/1)fontOverstrike:删除线(0/1)返回值:无
示例:
Fun.SetFont(uiName, "listbox_holders", "Microsoft YaHei UI", 14, "bold")功能:设置控件的背景图片
参数:
uiName:界面类名elementName:控件名称imagePath:图片路径autoSize:是否自动缩放(默认True)format:图片格式(默认'RGBA')state:状态('normal'/'selected')返回值:无
示例:
Fun.SetImage(uiName, "button_query", "Resources/search.png", True)功能:设置控件光标样式
参数:
uiName:界面类名elementName:控件名称cursor:光标样式('hand2', 'arrow', 'plus'等)返回值:无
示例:
Fun.SetCursor(uiName, "button_query", "hand2")功能:设置控件圆角
参数:
uiName:界面类名elementName:控件名称WidthEllipse:圆角宽度HeightEllipse:圆角高度返回值:无
示例:
Fun.SetRoundedRectangle(uiName, "button_query", 10, 10)功能:设置控件的当前值(选中值)
支持控件:RadioButton、CheckButton、Scale、Progress、ListBox、ComboBox、SpinBox、SwitchButton
参数:
uiName:界面类名elementName:控件名称value:要设置的值返回值:无
示例:
Fun.SetCurrentValue(uiName, "scale_1", 50)功能:获取控件的当前值(选中值)
参数:
uiName:界面类名elementName:控件名称返回值:控件的当前值
示例:
value = Fun.GetCurrentValue(uiName, "scale_1")功能:设置ListBox、ComboBox的选中索引
参数:
uiName:界面类名elementName:控件名称index:索引值返回值:无
示例:
Fun.SetCurrentIndex(uiName, "combobox_1", 0)功能:获取ListBox、ComboBox的选中索引
参数:
uiName:界面类名elementName:控件名称返回值:索引值
示例:
idx = Fun.GetCurrentIndex(uiName, "combobox_1")功能:设置ListBox、ComboBox的值列表
参数:
uiName:界面类名elementName:控件名称valueList:值列表返回值:无
示例:
Fun.SetValueList(uiName, "combobox_1", ["选项1", "选项2", "选项3"])功能:获取ListBox、ComboBox的值列表
参数:
uiName:界面类名elementName:控件名称返回值:值列表
示例:
items = Fun.GetValueList(uiName, "listbox_holders")功能:为控件添加用户数据
参数:
uiName:界面类名elementName:控件名称dataName:数据名称datatype:数据类型('int','float','string','list','dictionary')datavalue:数据值isMapToText:是否映射到控件的text属性返回值:无
示例:
Fun.AddUserData(uiName, "listbox_holders", "data", "list", [1,2,3], 0)功能:获取控件的用户数据
参数:
uiName:界面类名elementName:控件名称dataName:数据名称返回值:数据值
示例:
data = Fun.GetUserData(uiName, "listbox_holders", "data")功能:为控件添加Tkinter变量
参数:
uiName:界面类名elementName:控件名称defaultValue:默认值返回值:Tkinter变量对象
示例:
var = Fun.AddTKVariable(uiName, "input_code", "默认值")功能:设置控件的Tkinter变量值
参数:
uiName:界面类名elementName:控件名称value:要设置的值返回值:无
示例:
Fun.SetTKVariable(uiName, "input_code", "sz000001")功能:为Text控件或ListBox控件增加一行文字
参数:
uiName:界面类名elementName:控件名称text:文字内容lineIndex:目标行号(默认"end")textTag:标记名称set_see:是否滚动到该行返回值:无
示例:
# 添加表头Fun.AddLineText(uiName, "listbox_holders", "序号 股东名称 持股数量(股) 持股比例(%) 股本性质")# 添加数据行Fun.AddLineText(uiName, "listbox_holders", "1 平安银行股份有限公司 1000000 2.5% 流通A股")功能:清空Text控件或ListBox控件的所有内容
参数:
uiName:界面类名elementName:控件名称返回值:无
示例:
Fun.DelAllLines(uiName, "listbox_holders")功能:清空控件的所有内容(支持ListBox、Text、TreeView、ComboBox)
参数:
uiName:界面类名elementName:控件名称返回值:无
示例:
Fun.Clear(uiName, "listbox_holders")功能:增加树形控件项
参数:
uiName:界面类名elementName:控件名称parentItem:父结点(""表示根节点)insertItemPosition:插入位置(默认"end")itemName:项目名称itemText:项目显示文本itemValues:项目值iconName:图标名称tag:标记名称返回值:创建的项对象
示例:
Fun.AddTreeItem(uiName, "treeview_1", "", "end", "item1", "根节点", "", "folder.png")Fun.AddTreeItem(uiName, "treeview_1", "item1", "end", "child1", "子节点", "", "file.png")功能:展开树形控件的所有节点
参数:
uiName:界面类名elementName:控件名称返回值:无
示例:
Fun.ExpandTreeView(uiName, "treeview_1")功能:为ListView插入一行
参数:
uiName:界面类名elementName:控件名称rowIndex:行索引(默认'end')values:行值(元组或逗号分隔字符串)tag:标记名称返回值:行索引
示例:
Fun.AddRowText(uiName, "listview_1", "end", ("1", "平安银行", "1000000", "2.5%", "流通A股"))功能:批量添加多行数据到ListView
参数:
uiName:界面类名elementName:控件名称rowIndex:起始行索引(默认'end')rowValuesList:行值列表tagList:标记列表返回值:起始行索引
示例:
data = [ ("1", "平安银行", "1000000", "2.5%", "流通A股"), ("2", "深发展", "500000", "1.2%", "流通A股")]Fun.AddMultiRowText(uiName, "listview_1", "end", data)功能:获取ListView所有行和列数据
参数:
uiName:界面类名elementName:控件名称返回值:二维列表
示例:
all_data = Fun.GetAllRowTextList(uiName, "listview_1")for row in all_data: print(row)功能:删除ListView指定行
参数:
uiName:界面类名elementName:控件名称rowIndex:行索引返回值:无
示例:
Fun.DeleteRow(uiName, "listview_1", 0)功能:清空ListView所有行
参数:
uiName:界面类名elementName:控件名称返回值:无
示例:
Fun.DeleteAllRows(uiName, "listview_1")功能:按指定列对ListView排序
参数:
uiName:界面类名elementName:控件名称columnIndex:列索引reverse:是否降序(默认False)sortkeyDict:排序键映射字典返回值:无
示例:
Fun.SortListView(uiName, "listview_1", 2, True) # 按持股数量降序排序功能:设置ListView的行样式
参数:
uiName:界面类名elementName:控件名称rowIndex:行索引('even','odd','all'或数字)bgColor:背景色fgColor:文字颜色textFont:字体返回值:无
示例:
# 设置偶数行样式Fun.SetRowStyle(uiName, "listview_1", "even", "#F5F5F5", "#000000")# 设置奇数行样式Fun.SetRowStyle(uiName, "listview_1", "odd", "#FFFFFF", "#000000")# 设置悬停行样式Fun.SetRowStyle(uiName, "listview_1", "hover", "#E8F0FE", "#000000")功能:将ListView单元格设置为可编辑输入框
参数:
uiName:界面类名elementName:控件名称rowIndex:行索引columnIndex:列索引callback:编辑完成后的回调函数返回值:无
示例:
defon_cell_edit(row, col, text): print(f"单元格({row},{col})内容变更为:{text}")Fun.SetCellEntry(uiName, "listview_1", 0, 2, on_cell_edit)功能:将ListView单元格设置为下拉框
参数:
uiName:界面类名elementName:控件名称rowIndex:行索引columnIndex:列索引initList:下拉选项列表callback:选择完成后的回调函数返回值:无
示例:
options = ["流通A股", "流通B股", "限售A股"]Fun.SetCellComboBox(uiName, "listview_1", 0, 4, options)功能:调用显示一个模式对话框
参数:
uiName:界面类名topmost:是否置最前(默认1)toolwindow:是否有标题栏(默认1)grab_set:是否独占消息(默认1)wait_window:是否等待窗口关闭(默认1)animation:动画类型('fadein','zoomin')params:传递给对话框的参数返回值:对话框返回的数据字典
示例:
result = Fun.CallUIDialog("input_dialog", 1, 1, 1, 1, "fadein")功能:在指定控件上嵌入加载一个界面
参数:
uiName:当前界面类名elementName:目标控件名称targetUIName:要加载的界面名称params:传递给加载界面的参数ignoreSameUI:是否忽略重复加载相同界面(默认True)返回值:加载的界面实例
示例:
Fun.LoadUIDialog(uiName, "frame_content", "detail_page")功能:从当前界面跳转到另一个界面(替换当前界面)
参数:
uiName:当前界面类名targetUIName:目标界面类名params:传递给目标界面的参数返回值:无
示例:
Fun.GoToUIDialog(uiName, "main_page")功能:在指定控件上添加一个界面(可指定位置)
参数:
uiName:当前界面类名elementName:目标控件名称targetUIName:要添加的界面名称x:x坐标y:y坐标params:传递给添加界面的参数返回值:添加的界面实例
示例:
Fun.AddUIDialog(uiName, "canvas_1", "child_page", 50, 50)功能:为NoteBook控件增加选项页
参数:
uiName:界面类名elementName:NoteBook控件名称title:页面标题iconFile:页面图标文件importUI:要加载的界面文件返回值:无
示例:
Fun.AddPage(uiName, "notebook_1", "股东列表", "icon.png", "holders_page")Fun.AddPage(uiName, "notebook_1", "财务数据", "", "finance_page")功能:选中NoteBook的指定页
参数:
uiName:界面类名elementName:NoteBook控件名称index:页面索引返回值:无
示例:
Fun.SelectPage(uiName, "notebook_1", 0)功能:获取NoteBook当前选中的页面索引
参数:
uiName:界面类名elementName:NoteBook控件名称返回值:页面索引
示例:
idx = Fun.GetSelectedPageIndex(uiName, "notebook_1")功能:弹出一个信息对话框
参数:
text:显示文字title:标题文字type:对话框类型('info','warning','error')parent:父窗口返回值:无
示例:
Fun.MessageBox("查询成功", "提示", "info")Fun.MessageBox("输入有误", "错误", "error")功能:弹出一个Yes/No选择对话框
参数:
title:标题文字text:显示文字parent:父窗口返回值:True(Yes)/False(No)
示例:
if Fun.AskBox("确认", "确定要退出吗?"): Fun.ExitApplication()功能:弹出一个Yes/No/Cancel选择对话框
参数:
title:标题文字text:显示文字parent:父窗口返回值:"Yes"/"No"/"Cancel"
示例:
result = Fun.AskCancelBox("保存", "是否保存修改?")if result == "Yes": save_data()elif result == "No": exit_without_save()功能:弹出一个输入对话框
参数:
title:标题文字prompt:提示文字initialvalue:默认值parent:父窗口返回值:用户输入的字符串
示例:
code = Fun.InputBox("输入股票代码", "请输入股票代码(如:sz000001)", "sz000001")功能:自定义输入对话框,可设置大小和多行输入
参数:
width:对话框宽度lines:行数(>1时为多行输入)bgColor:背景色titleText:标题文字promptText:提示文字defaultText:默认文本callBackFunction:回调函数返回值:用户输入的文本
示例:
defon_input(text): print(f"输入内容:{text}")text = Fun.InputDialog(400, 5, "#f8f9fa", "输入备注", "请输入备注信息", "", on_input)功能:打开目录选择对话框
参数:
title:标题initDir:初始目录parent:父窗口返回值:选择的目录路径
示例:
path = Fun.SelectDirectory("选择保存目录", "C:\\")功能:打开文件选择对话框
参数:
title:标题filetypes:文件类型过滤initDir:初始目录multi:是否允许多选返回值:选择的文件路径(多选时返回列表)
示例:
file_path = Fun.OpenFile("选择数据文件", [('Excel文件','*.xlsx'),('所有文件','*.*')])功能:打开文件保存对话框
参数:
title:标题filetypes:文件类型过滤initDir:初始目录initialFile:默认文件名defaultextension:默认扩展名返回值:保存的文件路径
示例:
save_path = Fun.SaveFile("保存数据", [('CSV文件','*.csv')], "C:\\", "data", "csv")功能:打开颜色选择对话框
参数:
title:标题返回值:颜色值
示例:
color = Fun.SelectColor("选择背景色")功能:从文件中读取内容
参数:
filePath:文件路径encoding:编码(默认'utf-8')autoEval:是否自动执行eval转换返回值:文件内容
示例:
content = Fun.ReadFromFile("data.txt", "utf-8")json_data = Fun.ReadFromFile("config.json", "utf-8", True)功能:将内容写入文件
参数:
filePath:文件路径content:写入内容encoding:编码(默认'utf-8')append:是否追加模式(默认False)返回值:成功返回True,失败返回False
示例:
Fun.WriteToFile("output.txt", "查询结果", "utf-8")Fun.WriteToFile("log.txt", "新日志", "utf-8", True)功能:复制文件
参数:
srcFile:源文件dstFile:目标文件coverMode:是否覆盖已存在文件返回值:成功返回True,失败返回False
示例:
Fun.CopyFile("source.txt", "backup.txt", True)功能:移动文件
参数:
srcFile:源文件dstFile:目标文件coverMode:是否覆盖已存在文件返回值:成功返回True,失败返回False
示例:
Fun.MoveFile("temp.txt", "archive/temp.txt")功能:删除文件
参数:
dstFile:要删除的文件返回值:无
示例:
Fun.DeleteFile("temp.txt")功能:创建目录
参数:
dstDir:目录路径coverMode:是否覆盖已存在目录返回值:成功返回True,失败返回False
示例:
Fun.CreateDir("data/output", True)功能:删除目录
参数:
srcDir:目录路径返回值:无
示例:
Fun.DeleteDir("temp")功能:遍历目录获取所有指定类型的文件
参数:
parentPath:根目录alldirs:是否进入子目录extName:扩展名筛选(字符串或列表)返回值:文件路径列表
示例:
# 获取所有py文件py_files = Fun.WalkAllResFiles(".", True, "py")# 获取图片文件img_files = Fun.WalkAllResFiles("Resources", True, ["png", "jpg", "gif"])功能:获取文件的MD5值
参数:
srcFile:文件路径返回值:MD5字符串
示例:
md5 = Fun.GetFileMD5("data.txt")print(f"文件MD5:{md5}")功能:比较两个文件的MD5值是否一致
参数:
srcFile:源文件dstFile:目标文件返回值:True一致,False不一致
示例:
if Fun.CompareFileMD5("source.txt", "backup.txt"): print("文件相同")功能:在画布上画线
参数:
uiName:界面类名drawCanvasName:画布名称x1,y1:起点坐标x2,y2:终点坐标Anchor:锚点('nw','center'等)color:线条颜色width:线条宽度dash:虚线模式 (dash1,dash2)shapeTag:图形标签返回值:图形标签
示例:
Fun.DrawLine(uiName, "canvas_1", 10, 10, 100, 100, "nw", "#FF0000", 2)功能:在画布上画矩形
参数:
uiName:界面类名drawCanvasName:画布名称x1,y1:左上角坐标x2,y2:右下角坐标Anchor:锚点color:填充颜色outlinecolor:边框颜色outlinewidth:边框宽度dash:虚线模式shapeTag:图形标签返回值:图形标签
示例:
Fun.DrawRectangle(uiName, "canvas_1", 10, 10, 200, 100, "nw", "#5D9CEC", "#333333", 1)功能:在画布上画圆
参数:
uiName:界面类名drawCanvasName:画布名称x1,y1:外接矩形左上角x2,y2:外接矩形右下角Anchor:锚点color:填充颜色outlinecolor:边框颜色outlinewidth:边框宽度dash:虚线模式shapeTag:图形标签返回值:图形标签
示例:
Fun.DrawCircle(uiName, "canvas_1", 50, 50, 150, 150, "nw", "#ED5565")功能:在画布上写文字
参数:
uiName:界面类名drawCanvasName:画布名称x,y:坐标Anchor:锚点text:文字内容textFont:字体color:文字颜色anchor:对齐方式shapeTag:图形标签返回值:图形标签
示例:
font = Fun.CreateFont("Microsoft YaHei UI", 16, True)Fun.DrawText(uiName, "canvas_1", 100, 50, "nw", "十大股东", font, "#000000")功能:在画布上显示图片
参数:
uiName:界面类名drawCanvasName:画布名称x1,y1:图片左上角x2,y2:图片右下角Anchor:锚点imagefile:图片文件shapeTag:图形标签返回值:图形标签
示例:
Fun.DrawImage(uiName, "canvas_1", 0, 0, 100, 100, "nw", "logo.png")功能:绘制圆角矩形
参数:
uiName:界面类名drawCanvasName:画布名称x1,y1:左上角x2,y2:右下角Anchor:锚点color:填充颜色outlinecolor:边框颜色outlinewidth:边框宽度dash:虚线模式roundRadius:圆角半径shapeTag:图形标签返回值:图形标签
示例:
Fun.DrawRoundedRectangle(uiName, "canvas_1", 10, 10, 200, 50, "nw", "#5D9CEC", "#333333", 1, (0,0), 10)功能:删除画布中的图形
参数:
uiName:界面类名drawCanvasName:画布名称shapeTag:图形标签返回值:无
示例:
Fun.DeleteShape(uiName, "canvas_1", "rect_1")功能:设置图形填充颜色
参数:
uiName:界面类名drawCanvasName:画布名称shapeTag:图形标签color:颜色值返回值:无
示例:
Fun.SetShapeFillColor(uiName, "canvas_1", "rect_1", "#FF0000")功能:设置画布文字内容
参数:
uiName:界面类名drawCanvasName:画布名称shapeTag:图形标签text:文字内容color:文字颜色返回值:无
示例:
Fun.SetShapeText(uiName, "canvas_1", "text_1", "更新后的文字", "#00FF00")功能:获取图形位置和大小
参数:
uiName:界面类名canvasName:画布名称shapeTag:图形标签返回值:元组 (x1,y1,x2,y2)
示例:
x1, y1, x2, y2 = Fun.GetShapeRect(uiName, "canvas_1", "rect_1")功能:日历选择控件
方法:
SetBGColor(color):设置背景色SetDatebarBGColor(color):设置日期栏背景色SetDatebarFGColor(color):设置日期栏文字色SetSelectedBGColor(color):设置选中日期背景色SetSelectedFGColor(color):设置选中日期文字色GetDate():获取选中日期SetDate(year,month,day):设置显示日期SetRangeOfYears(year_from,year_to):设置年份范围SetBtnCallBackFunction(func,uiName,widgetName):设置按钮回调示例:
calendar = Fun.GetElement(uiName, "calendar_1")calendar.SetBGColor("#FFFFFF")calendar.SetDatebarBGColor("#5D9CEC")calendar.SetRangeOfYears(2020, 2030)date = calendar.GetDate()功能:下拉式日期选择控件
方法:
SetBGColor(color):设置背景色SetFGColor(color):设置文字色SetCalendarBGColor(color):设置日历背景色SetSeparatorChar(char):设置日期分隔符('-'或'/')GetDate():获取选中日期SetDate(year,month,day):设置日期SetBtnCallBackFunction(func,uiName,widgetName):设置回调示例:
datepicker = Fun.GetElement(uiName, "datepicker_1")datepicker.SetSeparatorChar("-")datepicker.SetDate(2025, 9, 30)selected = datepicker.GetDate()功能:开关按钮控件
方法:
SetCurrValue(value):设置当前值(True/False)GetCurrValue():获取当前值SetOnStateBGColor(color):设置开启时背景色SetOffStateBGColor(color):设置关闭时背景色SetOnStateText(text):设置开启时文字SetOffStateText(text):设置关闭时文字SetOnStateTextColor(color):设置开启时文字颜色SetOffStateTextColor(color):设置关闭时文字颜色SetSwitchMode(mode,framedelay):设置切换模式(0立即/1动画)SetSwitchCallBackFunction(func,uiName,widgetName):设置切换回调示例:
switch = Fun.GetElement(uiName, "switch_1")switch.SetOnStateBGColor("#2F9F00")switch.SetOffStateBGColor("#333333")switch.SetOnStateText("ON")switch.SetOffStateText("OFF")value = switch.GetCurrValue()功能:滑块控件
方法:
SetMinValue(min):设置最小值SetMaxValue(max):设置最大值SetCurrValue(value):设置当前值GetCurrValue():获取当前值SetBarBGColor1(color):设置滑块右边背景色SetBarBGColor2(color):设置滑块左边背景色SetBarButtonColor(color):设置滑块颜色SetBarImage1(fileName):设置左边背景图SetBarImage2(fileName):设置右边背景图SetButtonBGImage(fileName):设置滑块背景图SetValueChangedFunction(func,uiName,widgetName):设置值变化回调示例:
slider = Fun.GetElement(uiName, "slider_1")slider.SetMinValue(0)slider.SetMaxValue(100)slider.SetCurrValue(50)value = slider.GetCurrValue()功能:圆形进度指示器
方法:
SetBGColor(color):设置背景色SetBGColor_Center(color):设置中心背景色SetFillColor(color):设置填充颜色SetFillWidth(width):设置填充宽度SetBeginAngle(angle):设置起始角度SetEndAngle(angle):设置结束角度SetMaxValue(max):设置最大值SetCurrValue(value):设置当前值SetSections(section):设置分段数SetPersentage(isPersentage):是否显示百分比SetFont(font):设置字体SetTextColor(color):设置文字颜色示例:
dial = Fun.GetElement(uiName, "progress_1")dial.SetMaxValue(100)dial.SetCurrValue(75)dial.SetFillColor("#5D9CEC")dial.SetPersentage(True)功能:导航栏控件,支持水平和垂直方向
方法:
AddItem(text,icon,page):添加导航项DelItem(index):删除导航项Clear():清空所有项SetCurrentIndex(index):设置当前选中项GetCurrentIndex():获取当前选中索引GetCurrentItemText():获取当前项文本GetCurrentItemValue():获取当前项值SetDirection(direction):设置方向(HORIZONTAL/VERTICAL)SetAnchor(anchor):设置锚点SetCompound(compound):设置图标位置SetItemBGColor(color):设置项背景色SetItemFGColor(color):设置项文字色SetItemFont(font):设置项字体SetItemImage(fileName):设置项图标SetNavigationCallBackFunction(func,uiName,widgetName):设置点击回调示例:
nav = Fun.GetElement(uiName, "navigation_1")nav.SetDirection(tkinter.HORIZONTAL)nav.AddItem("股东列表", "icon1.png", "holders")nav.AddItem("财务数据", "icon2.png", "finance")nav.SetCurrentIndex(0)defon_nav_click(uiName, widgetName, text, page): print(f"点击了{text},跳转到{page}")nav.SetNavigationCallBackFunction(on_nav_click, uiName, "navigation_1")功能:树形列表菜单控件
方法:
AddTitle(title,icon,page):添加一级菜单AddItem(item,title,icon,page):添加二级菜单项DelTitle(title):删除一级菜单DelItem(title,item):删除二级菜单项Clear():清空所有ExpandAllTitle(expand):展开/收缩所有标题IsTitleExpand(title):判断标题是否展开SetTitleBGColor(color):设置标题背景色SetTitleFGColor(color):设置标题文字色SetTitleFont(font):设置标题字体SetItemBGColor(color):设置项背景色SetItemFGColor(color):设置项文字色SetItemFont(font):设置项字体SetListMenuCallBackFunction(func,uiName,widgetName):设置点击回调示例:
menu = Fun.GetElement(uiName, "listmenu_1")menu.AddTitle("股东信息", "folder.png", "")menu.AddItem("十大股东", "股东信息", "file.png", "holders")menu.AddItem("高管持股", "股东信息", "file.png", "executives")menu.AddTitle("财务数据", "folder.png", "")menu.ExpandAllTitle(True)defon_menu_click(uiName, widgetName, item, page): print(f"点击了{item},页面:{page}")menu.SetListMenuCallBackFunction(on_menu_click, uiName, "listmenu_1")功能:图片轮播控件
方法:
AddPage(title,image,page):添加页面DelPage(index):删除页面Clear():清空所有SetCurrentIndex(index):设置当前显示页GetCurrentIndex():获取当前索引SetProgressBarLeft(left):设置进度条X位置SetProgressBarTop(top):设置进度条Y位置SetProgressBarButtonRadius(radius):设置按钮圆点半径SetPageClickCallBackFunction(func,uiName,widgetName):设置页面点击回调Play(delay):开始自动轮播示例:
switcher = Fun.GetElement(uiName, "switchpage_1")switcher.AddPage("股东列表", "holders.jpg", "holders")switcher.AddPage("财务图表", "finance.jpg", "finance")switcher.AddPage("公司公告", "notice.jpg", "notice")switcher.SetProgressBarLeft(300)switcher.SetProgressBarTop(200)switcher.Play(3000) # 3秒轮播一次功能:网格列表展示控件
方法:
AddItem(text,icon,page):添加项目AddItemUI(targetUIName,params):添加界面项目DelItem(index):删除项目Clear():清空所有SetCurrentIndex(index):设置当前选中项GetCurrentIndex():获取当前索引SetItemWidth(width):设置项宽度SetItemHeight(height):设置项高度SetItemSpacing(spacing):设置项间距SetItemBGColor(color):设置项背景色SetItemFGColor(color):设置项文字色SetItemFont(font):设置项字体SetClickItemCallBackFunction(func,uiName,widgetName):设置点击回调示例:
showcase = Fun.GetElement(uiName, "showcase_1")showcase.SetItemWidth(220)showcase.SetItemHeight(60)showcase.SetItemSpacing(10)showcase.AddItem("平安银行", "bank.png", "000001")showcase.AddItem("万科A", "estate.png", "000002")showcase.AddItem("贵州茅台", "wine.png", "600519")defon_item_click(uiName, widgetName, text, page): print(f"点击了{text},代码:{page}")showcase.SetClickItemCallBackFunction(on_item_click, uiName, "showcase_1")功能:带图标和提示的输入框
方法:
SetText(text):设置文本GetText():获取文本SetFont(font):设置字体SetBGColor(color):设置背景色SetFGColor(color):设置文字色SetTipText(text):设置提示文字SetTipFGColor(color):设置提示文字颜色SetRestriction(restriction):设置输入限制('number','letter','alphanumeric','integer','phone','email')SetLeftIcon(iconFile):设置左侧图标SetRightIcon(iconFile):设置右侧图标SetLeftIconClickFunction(func,uiName,widgetName):设置左侧图标点击回调SetRightIconClickFunction(func,uiName,widgetName):设置右侧图标点击回调SetTextChangedFunction(func,uiName,widgetName):设置文本变化回调示例:
entry = Fun.GetElement(uiName, "input_code")entry.SetTipText("请输入股票代码")entry.SetLeftIcon("search.png")entry.SetRestriction("alphanumeric")defon_text_change(uiName, widgetName, text): print(f"输入内容:{text}")entry.SetTextChangedFunction(on_text_change, uiName, "input_code")功能:带滚动条的多行文本框
方法:
SetText(text):设置文本GetText():获取文本SetFont(font):设置字体SetBGColor(color):设置背景色SetFGColor(color):设置文字色SetAutoWrap(autoWrap):设置自动换行SetHScrollBar():显示横向滚动条SetVScrollBar():显示纵向滚动条RemoveHScrollBar():隐藏横向滚动条RemoveVScrollBar():隐藏纵向滚动条InsertText(position,text,tag):插入文本DeleteContent(fromPosition,toPosition):删除内容GetCurrentLine():获取当前行号示例:
textbox = Fun.GetElement(uiName, "text_1")textbox.SetText("十大股东信息:\n1. 平安银行\n2. 深发展")textbox.SetAutoWrap(True)textbox.SetVScrollBar()功能:设置控件的事件响应函数
参数:
uiName:界面类名elementName:控件名称eventName:事件名称('Command','FocusOut','KeyPress'等)callbackFunction:回调函数返回值:无
示例:
defon_focus_out(event, uiName, widgetName): print("焦点离开")Fun.SetBindEventFunction(uiName, "input_code", "FocusOut", on_focus_out)功能:为控件创建提示信息
参数:
uiName:界面类名elementName:控件名称tipText:提示文字bgColor:背景色fgColor:文字色inTop:是否置顶返回值:无
示例:
Fun.CreateToolTip(uiName, "button_query", "点击查询十大股东信息", "#333333", "#FFFFFF", True)功能:设置控件接受拖拽文件
参数:
uiName:界面类名elementName:控件名称functionCallback:回调函数返回值:无
示例:
defon_file_drop(fileList, uiName, widgetName):for file in fileList: print(f"拖拽文件:{file}")Fun.SetControlAcceptDrop(uiName, "listbox_holders", on_file_drop)功能:为控件设置滚动条
参数:
uiName:界面类名elementName:控件名称orient:方向(VERTICAL/HORIZONTAL)返回值:无
示例:
Fun.SetElementScrollbar(uiName, "listbox_holders", tkinter.VERTICAL)Fun.SetElementScrollbar(uiName, "listbox_holders", tkinter.HORIZONTAL)功能:获取当前时间
参数:
splitChar:分隔符(默认':')返回值:时间字符串
示例:
time_str = Fun.GetCurrTime()print(time_str) # 输出:14:30:25功能:获取当前日期
参数:
splitChar:分隔符(默认':')返回值:日期字符串
示例:
date_str = Fun.GetCurrDate("-")print(date_str) # 输出:2025-9-30功能:程序暂停等待
参数:
second:等待秒数(默认1)返回值:无
示例:
Fun.Sleep(2) # 暂停2秒功能:生成随机数
参数:
begin:起始值(默认0)end:结束值(默认100)返回值:随机整数
示例:
num = Fun.RandNumber(1, 10)print(f"随机数:{num}")功能:判断是否为手机号
参数:
text:要判断的字符串返回值:True/False
示例:
if Fun.IsMobilePhone("13800138000"): print("是手机号")功能:判断是否为邮箱地址
参数:
text:要判断的字符串返回值:True/False
示例:
if Fun.IsEmail("test@example.com"): print("是邮箱")功能:判断是否为数字字符串
参数:
text:要判断的字符串返回值:True/False
示例:
if Fun.IsNumeric("123.45"): print("是数字")功能:获取堆栈中上层调用函数的名称和参数
参数:无
返回值:[函数名, 参数列表]
示例:
func_name, args = Fun.GetParentCallFunc()print(f"调用者:{func_name}")功能:创建字体对象
参数:
fontName:字体名称fontSize:字体大小fontWeight:字重(True/False或'normal'/'bold')fontSlant:倾斜(True/False或'roman'/'italic')fontUnderline:下划线(True/False)fontOverstrike:删除线(True/False)返回值:字体对象
示例:
font = Fun.CreateFont("Microsoft YaHei UI", 14, True, False, False, False)功能:枚举系统所有可用字体
参数:无
返回值:字体名称列表
示例:
fonts = Fun.EnumFontName()for font in fonts[:10]: # 显示前10个 print(font)# stock_holders_cmd.pyimport akshare as akimport FunuiName = "stock_holders"defForm_1_onLoad(uiName, threadings=0):"""界面加载时初始化""" Fun.SetText(uiName, "input_code", "sz000001") Fun.SetText(uiName, "input_date", "20250930") Fun.SetText(uiName, "label_status", "股票代码sh上海,sz深圳,日期格式:20250930") Fun.CreateToolTip(uiName, "input_code", "请输入股票代码,如:sz000001", "#333333", "#FFFFFF")defbutton_query_onCommand(uiName, widgetName, threadings=0):"""查询按钮点击事件""" code = Fun.GetText(uiName, "input_code").strip() date = Fun.GetText(uiName, "input_date").strip()ifnot code ornot date: Fun.SetText(uiName, "label_status", "请输入股票代码和日期")return Fun.SetText(uiName, "label_status", f"正在查询 {code}{date}...") Fun.Clear(uiName, "listbox_holders")try:# 调用akshare获取数据 df = ak.stock_gdfx_top_10_em(symbol=code, date=date)if df isNoneor df.empty: Fun.SetText(uiName, "label_status", f"未找到 {code} 的股东数据")return# 添加表头 Fun.AddLineText(uiName, "listbox_holders", "序号 股东名称 持股数量(股) 持股比例(%) 股本性质") Fun.AddLineText(uiName, "listbox_holders", "-" * 80)# 添加数据for _, row in df.iterrows(): rank = str(row.get("序号", "")) name = str(row.get("股东名称", ""))[:20] shares = str(row.get("持股数", "")) ratio = str(row.get("占总股本持股比例", "")) holder_type = str(row.get("股份类型", ""))[:8] line = f"{rank:<4}{name:<20}{shares:<15}{ratio:<12}{holder_type}" Fun.AddLineText(uiName, "listbox_holders", line) Fun.SetText(uiName, "label_status", f"查询成功,共{len(df)}条记录")except Exception as e: Fun.SetText(uiName, "label_status", "查询失败") print(f"错误:{e}") Fun.MessageBox(f"查询失败:{str(e)}", "错误", "error")如有疑问请参考您项目下的源代码Fun.py。
作者简介:码上工坊,探索用编程为己赋能,定期分享编程知识和项目实战经验。持续学习、适应变化、记录点滴、复盘反思、成长进步。
重要提示:本文主要是记录自己的学习与实践过程,所提内容或者观点仅代表个人意见,只是我以为的,不代表完全正确,欢迎交流讨论。