Python 简易图形界面库easygui 对话框大全(续)

简介: Python 简易图形界面库easygui 对话框大全(续)

EasyGUI库

随着Python在数据科学、机器学习和Web开发等多个领域的广泛应用,图形用户界面(GUI)开发也变得越来越重要。对于初学者和快速原型设计来说,使用复杂的GUI库可能会让人感到望而生畏。幸运的是,Python的EasyGUI库提供了一个简单而直观的方式来创建基本的图形用户界面,无需深入了解复杂的GUI编程概念。

EasyGUI是一个用于非常简单的Python GUI编程的库。与Tkinter等更高级的库相比,EasyGUI通过提供一系列预构建的对话框和简单的函数调用来简化GUI开发过程。这使得开发者可以专注于应用程序的逻辑,而不是花费大量时间在界面设计上。

主要特点

  1. 简单易用:EasyGUI提供了直观的API,通常只需要一行代码就可以调用各种对话框,如消息框、选择框、文件选择框等。
  2. 跨平台兼容性:EasyGUI可以在Windows、macOS和Linux等多个操作系统上运行,确保您的应用程序具有广泛的可达性。
  3. 自定义选项:尽管EasyGUI强调的是简单性,但它仍然提供了一定程度的自定义能力,如更改对话框的标题、添加自定义按钮等。
  4. 集成Python标准库:EasyGUI基于Python的标准Tkinter库构建,这意味着您可以在需要时轻松集成更复杂的Tkinter功能。

使用场景

  • 快速原型设计:当您需要快速测试一个想法或展示一个概念验证时,EasyGUI可以帮助您快速构建一个简单的界面。
  • 小型项目和教育目的:对于不需要复杂界面的小型项目,或者在教学环境中向学生介绍GUI编程的概念,EasyGUI是一个理想的选择。
  • 脚本和工具:对于需要简单用户输入的脚本或工具,使用EasyGUI可以提供一个比命令行更友好的交互方式。

上回说到easygui前9种对话框样式,这回分享另外10种:

对话框样式

10. 文件打开框 fileopenbox

fileopenbox(msg=None, title=None, default='*', filetypes=None, multiple=False)

   Displays an "open file" dialog box and returns the selected file as a string.

   The "default" argument specifies a filepath that (normally) contains one or more wildcards.

   fileopenbox() will display only files that match the default filepath.

   If omitted, defaults to "\*" (all files in the current directory).

   :param str msg: the msg to be displayed.

   :param str title: the window title

   :param str default: filepath with wildcards

   :param object filetypes: filemasks that a user can choose, e.g. "\*.txt"

   :param bool multiple: If true, more than one file can be selected

   :return: the name of a file, or None if user chose to cancel

显示“打开文件”对话框,并将所选文件作为字符串返回。“default”参数指定(通常)包含一个或多个通配符的文件路径。例如,默认打开Excel文件如下:

import easygui as eg
eg.fileopenbox(msg=None, title=None, default='*.xls', filetypes=None, multiple=False)

11. 文件保存框 filesavebox

filesavebox(msg=None, title=None, default='', filetypes=None)

   A file to get the name of a file to save.

   Returns the name of a file, or None if user chose to cancel.

   **About the "default" argument**

   The ``default`` argument specifies the path and "glob pattern" for file names. The "\*" value, for example, sets the open file dialog to the current working directory and showing all files.

   For another example, setting the ``default`` argument to ``"C:/myjunk/*.py"`` sets the open file dialog to the C:\myjunk folder and showing only files that have the .py file extension. This glob pattern at the end of the ``default`` argument is required: passing ``"C:/myjunk"`` would not set the open file dialog to the C:\myjunk folder, but rather to the C:\ folder and "myjunk" as the initial filename.

   Note that on Windows, ``fileopenbox()`` automatically changes the path separator to the Windows path separator (backslash).

   The "filetypes" argument works like the "filetypes" argument to fileopenbox.

   :param str msg: the msg to be displayed.

   :param str title: the window title

   :param str default: default filename to return

   :param object filetypes: filemasks that a user can choose, e.g. " \*.txt"

   :return: the name of a file, or None if user chose to cancel

用于获取要保存的文件的名称的文件。返回文件名,如果用户选择取消,则返回“无”。

import easygui as eg
eg.filesavebox(msg=None, title=None, default='*.xls', filetypes=None)

12. 目录打开框 diropenbox

diropenbox(msg=None, title=None, default=None)

   A dialog to get a directory name.

   Returns the name of a directory, or None if user chose to cancel.

   If the "default" argument specifies a directory name, and that directory exists, then the dialog box will start with that directory.

   :param str msg: used in the window title on some platforms

   :param str title: the window title

   :param str default: starting directory when dialog opens

   :return: Normalized path selected by user

用于获取目录名的对话框。返回目录的名称,如果用户选择取消,则返回“无”。

如果“default”参数指定了一个目录名,并且该目录存在,则对话框将从该目录开始。

import easygui as eg
eg.diropenbox(msg=None, title=None, default=r'E:\Tables')

13. 索引对话框 indexbox

indexbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None, default_choice='Yes', cancel_choice='No')

   The ``indexbox()`` function displays a set of buttons, and returns the index of the selected button. For example, if you invoked index box with three choices (A, B, C), indexbox would return 0 if the user picked A, 1 if he picked B, and 2 if he picked C.

   :param str msg: the msg to be displayed

   :param str title: the window title

   :param list choices: a list or tuple of the choices to be displayed

   :param str image: Filename of image to display

   :param str default_choice: The choice you want highlighted when the gui appears

   :param str cancel_choice: If the user presses the 'X' close, which button should be pressed

   :return: the index of the choice selected, starting from 0

显示一组按钮,并返回所选按钮的索引。例如,如果您使用三个选项(A、B、C)调用索引框,则如果用户选择A,indexbox将返回0,如果用户选择B,则返回1,如果选择C,则返回2。

import easygui as eg
result = eg.indexbox('Which door do you choose?', 'Win Prizes!', choices=['Door 1', 'Door 2', 'Door 3'])
if result == 2:
    eg.msgbox('You win a new car!')
else:
    eg.msgbox('Better luck next time.')

14. 例外报告框 exceptionbox

exceptionbox(msg=None, title=None)

   Display a box that gives information about an exception that has just been raised.

   The caller may optionally pass in a title for the window, or a msg to accompany the error information.

   Note that you do not need to (and cannot) pass an exception object as an argument.  The latest exception will automatically be used.

   :param str msg: the msg to be displayed

   :param str title: the window title

   :return: None

报告错误或例外异常的信息,调用者可以选择性地传入窗口的标题或伴随错误信息的消息。

15. 代码文本框 codebox

codebox(msg='', title=' ', text='')

   Display some text in a monospaced font, with no line wrapping.

   This function is suitable for displaying code and text that is formatted using spaces.

   The text parameter should be a string, or a list or tuple of lines to be displayed in the textbox.

   :param str msg: the msg to be displayed

   :param str title: the window title

   :param str text: what to display in the textbox

多行文本框textbox(msg='', title=' ', text='', codebox=False, callback=None, run=True)很相似,少了后面三个参数:

16. 密码输入框 passwordbox

passwordbox(msg='Enter your password.', title=' ', default='', image=None, root=None)

   Show a box in which a user can enter a password.

   The text is masked with asterisks, so the password is not displayed.

   :param str msg: the msg to be displayed.

   :param str title: the window title

   :param str default: value returned if user does not change it

   :return: the text that the user entered, or None if they cancel

     the operation.

显示一个框,用户可以在其中输入密码。文本用星号屏蔽,因此不会显示密码。

import easygui as eg
eg.passwordbox(msg='请输入密码:', title='密码输入框', default='456123', image=None, root=None)

17. 多重文本框 multenterbox

multenterbox(msg='Fill in values for the fields.', title=' ', fields=[], values=[], callback=None, run=True)

   Show screen with multiple data entry fields.

   If there are fewer values than names, the list of values is padded with empty strings until the number of values is the same as the number of names.

   If there are more values than names, the list of values is truncated so that there are as many values as names.

   Returns a list of the values of the fields, or None if the user cancels the operation.

   :param str msg: the msg to be displayed.

   :param str title: the window title

   :param list fields: a list of fieldnames.

   :param list values: a list of field values

   :return: String

显示包含多个数据输入字段,即同一个对话框中有多个单行文本框。例如:

import easygui as eg
msg = "Enter your personal information"
title = "Credit Card Application"
fieldNames = ["Name","Address","City","State","ZipCode"]
fieldValues = []  # we start with blanks for the values
fieldValues = eg.multenterbox(msg,title, fieldNames)
# make sure that none of the fields was left blank
while 1:
    if fieldValues is None: break
    errmsg = ""
    for i in range(len(fieldNames)):
        if fieldValues[i].strip() == "":
            errmsg += ('"%s" is a required field.\n\n' % fieldNames[i])
        if errmsg == "":
            break # no problems found
        fieldValues = eg.multenterbox(errmsg, title, fieldNames, fieldValues)
print("Reply was: %s" % str(fieldValues))

18. 组合密码框 multpasswordbox

multpasswordbox(msg='Fill in values for the fields.', title=' ', fields=(), values=(), callback=None, run=True)

   Same interface as multenterbox.  But in multpassword box, the last of the fields is assumed to be a password, and is masked with asterisks.

   :param str msg: the msg to be displayed.

   :param str title: the window title

   :param list fields: a list of fieldnames.

   :param list values: a list of field values

   :return: String

与多重文本框相似,但最后一个是密码框,输入会补星号代替,例如:

import easygui as eg
msg = "输入你的登录信息:"
title = "组合密码框"
fieldNames = ["账号:", "密码:"]
fieldValues = eg.multpasswordbox(msg,title, fieldNames)
# make sure that none of the fields was left blank
while 1:
    if fieldValues[0].strip() == "":
        errmsg = '账号不可为空!'
        fieldValues = eg.multpasswordbox(errmsg, title, fieldNames, fieldValues)
    elif fieldValues[1].strip() == "":
        errmsg = '密码不可为空!'
        fieldValues = eg.multpasswordbox(errmsg, title, fieldNames, fieldValues)
    else:
        break
print("账号、密码分别为: %s" % fieldValues)

19. 多项选择框 multchoicebox

multchoicebox(msg='Pick an item', title='', choices=None, preselect=0, callback=None, run=True)

   The ``multchoicebox()`` function provides a way for a user to select from a list of choices. The interface looks just like the ``choicebox()`` function's dialog box, but the user may select zero, one, or multiple choices.

   The choices are specified in a sequence (a tuple or a list).

   :param str msg: the msg to be displayed

   :param str title: the window title

   :param list choices: a list or tuple of the choices to be displayed

   :param preselect: Which item, if any are preselected when dialog appears

   :return: A list of strings of the selected choices or None if cancelled.

与单项选择框 choicebox() 相似,只有单项选择和多项选择的区别:

import easygui as eg
msg ="What is your favorite flavor?"
title = "Ice Cream Survey"
choices = ["Vanilla", "Chocolate", "Strawberry", "Rocky Road"]
choice = eg.multchoicebox(msg, title, choices)

总结

EasyGUI为Python开发者提供了一个快速创建基本图形用户界面的途径。它降低了GUI开发的门槛,使得即使是没有经验的开发者也能轻松构建出功能完善的界面。尽管它可能不适合复杂的应用程序或专业的软件开发项目,但对于快速原型设计、小型项目和教学目的来说,它是一个强大而高效的工具。通过利用EasyGUI的简单性和灵活性,开发者可以专注于解决问题,而不是纠结于复杂的界面细节。


目录
相关文章
|
3月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
601 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
3月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
294 0
|
8月前
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
1509 103
|
5月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
2月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
287 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
2月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
352 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
4月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
298 18
|
5月前
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
569 51
|
4月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
445 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
11月前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
458 20

推荐镜像

更多