怎么用一行Python代码实现GUI图形界面(gui,python,开发技术)

时间:2024-05-02 23:13:06 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

主要使用Python的PySimpleGUI库来完成这个工作。

#安装PySimpleGUIpipinstallPySimpleGUI-ihttps://mirror.baidu.com/pypi/simple

1、选择文件夹

首先导入PySimpleGUI库,并且用缩写sg来表示。

importPySimpleGUIassg#窗口显示文本框和浏览按钮,以便选择一个文件夹dir_path=sg.popup_get_folder("SelectFolder")ifnotdir_path:sg.popup("Cancel","Nofolderselected")raiseSystemExit("Cancelling:nofolderselected")else:sg.popup("Thefolderyouchosewas",dir_path)

通过使用PySimpleGUI的popup_get_folder()方法,一行代码就能实现选择文件夹的操作。

示例如下

怎么用一行Python代码实现GUI图形界面

点击Browse按钮,选择文件夹,文本框就会显示出文件夹的绝对路径。

点击OK按钮,显示最终选择的路径信息,再次点击OK按钮,结束窗口。

怎么用一行Python代码实现GUI图形界面

如果没有选择文件夹,而是直接点击OK按钮,会直接提示没有选取文件夹。

2、选择文件

选择文件操作和上面选择文件夹的有点相似。

#窗口显示文本框和浏览按钮,以便选择文件fname=sg.popup_get_file("ChooseExcelfile",multiple_files=True,file_types=(("ExcelFiles","*.xls*"),),)ifnotfname:sg.popup("Cancel","Nofilenamesupplied")raiseSystemExit("Cancelling:nofilenamesupplied")else:sg.popup("Thefilenameyouchosewas",fname)

不同的是,选择文件可以设置multiple_files(是否为多个文件)和file_types(文件类型)参数。

示例如下

怎么用一行Python代码实现GUI图形界面

选择了多个Excel文件,最终结果返回了所有文件的路径地址。

3、选择日期

使用popup_get_date()方法,显示一个日历窗口。

#显示一个日历窗口,通过用户的选择,返回一个元组(月,日,年)date=sg.popup_get_date()ifnotdate:sg.popup("Cancel","Nodatepicked")raiseSystemExit("Cancelling:nodatepicked")else:sg.popup("Thedateyouchosewas",date)

示例如下

怎么用一行Python代码实现GUI图形界面

选择好日期后,点击OK按钮,即可返回日期元组结果。

4、输入文本

使用popup_get_text()方法,显示一个文本输入框。

#显示文本输入框,输入文本信息,返回输入的文本,如果取消则返回Nonetext=sg.popup_get_text("Pleaseenteratext:")ifnottext:sg.popup("Cancel","Notextwasentered")raiseSystemExit("Cancelling:notextentered")else:sg.popup("Youhaveentered",text)

键入信息,示例如下

怎么用一行Python代码实现GUI图形界面

点击OK按钮,返回输入的文本信息。

如果没有输入,直接点击OK按钮,会提示没有文本输入。

5、弹窗无按钮

#显示一个弹窗,但没有任何按钮sg.popup_no_buttons("Youcannotclickanybuttons")

结果如下

怎么用一行Python代码实现GUI图形界面

6、弹窗无标题

#显示一个没有标题栏的弹窗sg.popup_no_titlebar("Averysimplepopup")

结果如下

怎么用一行Python代码实现GUI图形界面

7、弹窗只有OK按钮

#显示弹窗且只有OK按钮sg.popup_ok("Youcanonlyclickon'OK'")

结果如下

怎么用一行Python代码实现GUI图形界面

8、弹窗只有Error按钮(红色)

#显示弹窗且只有error按钮,按钮带颜色sg.popup_error("Somethingwentwrong")

结果如下

怎么用一行Python代码实现GUI图形界面

9、显示通知窗口

#显示一个“通知窗口”,通常在屏幕的右下角,窗口会慢慢淡入淡出sg.popup_notify("Taskdone!")

结果如下, Task done提示信息淡入淡出。

怎么用一行Python代码实现GUI图形界面

10、弹窗选择

#显示弹窗以及是和否按钮,选择判断answer=sg.popup_yes_no("Doyoulikethisvideo?")sg.popup("Youhaveselected",answer)

结果如下

怎么用一行Python代码实现GUI图形界面

11、自定义弹窗

上面那些弹窗都是库自带的,如果想自定义创建,可以参考下面的方法。

#自定义创建弹窗,一行代码完成choice,_=sg.Window("Continue?",[[sg.T("Doyouwanttosubscribetothischannel?")],[sg.Yes(s=10),sg.No(s=10),sg.Button('Maybe',s=10)]],disable_close=True,).read(close=True)sg.popup("Yourchoicewas",choice)

结果如下

怎么用一行Python代码实现GUI图形界面

12、实战

最后来个综合实战案例,将某个文件夹下所有的Excel文件中的sheet表,一一保存为单独的Excel文件

代码如下,需要安装xlwings库,其中pathlib库是内置的。

frompathlibimportPathimportPySimpleGUIassgimportxlwingsasxw#选择输入文件夹INPUT_DIR=sg.popup_get_folder("Selectaninputfolder")ifnotINPUT_DIR:sg.popup("Cancel","Nofolderselected")raiseSystemExit("Cancelling:nofolderselected")else:INPUT_DIR=Path(INPUT_DIR)#选择输出文件夹OUTPUT_DIR=sg.popup_get_folder("Selectanoutputfolder")ifnotOUTPUT_DIR:sg.popup("Cancel","Nofolderselected")raiseSystemExit("Cancelling:nofolderselected")else:OUTPUT_DIR=Path(OUTPUT_DIR)#获取输入文件夹中所有xls格式文件的路径列表files=list(INPUT_DIR.rglob("*.xls*"))withxw.App(visible=False)asapp:forindex,fileinenumerate(files):#显示进度sg.one_line_progress_meter("CurrentProgress",index+1,len(files))wb=app.books.open(file)#提取sheet表为单独的Excel表格forsheetinwb.sheets:wb_new=app.books.add()sheet.copy(after=wb_new.sheets[0])wb_new.sheets[0].delete()wb_new.save(OUTPUT_DIR/f"{file.stem}_{sheet.name}.xlsx")wb_new.close()sg.popup_ok("Taskdone!")

首先选择输入文件夹和输出文件夹的地址。

然后通过pathlib库对输入文件夹进行遍历,查找出所有xls格式文件的路径地址。

怎么用一行Python代码实现GUI图形界面

点击OK按钮后,就会开始表格转换,操作如下。

怎么用一行Python代码实现GUI图形界面

使用了one_line_progress_meter()方法显示程序处理的进度。

怎么用一行Python代码实现GUI图形界面

20表示有20次循环,原始Excel文件总计有20个,需要处理20次,其他的都在上图中标示出来咯。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:怎么用一行Python代码实现GUI图形界面的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:怎么使用react-activation实现keepAlive支持返回传参下一篇:

11 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18