编程语言
首页 > 编程语言> > Python笔记——图形用户界面easygui①

Python笔记——图形用户界面easygui①

作者:互联网

安装 easygui .

(pycharm–>settings–>interpreter–> ‘’+’’–>搜索‘easygui’–>install)
在这里插入图片描述
在这里插入图片描述
(在cmd输入pip install easygui 也可以)
(提示pip版本太低就更新一下)

最简单的应用,做一个“对话框”
在这里插入图片描述导入easygui笔记整理自网址:https://www.iteye.com/blog/javablogs-2098369

导入 EasyGui

使用 EasyGui 这个模块,要先导入它。

方法一:使用import easygui导入,那么使用 EasyGui 的函数的时候,必须在函数的前面加上前缀 easygui:
easygui.msgbox(…)

方法二:导入整个 EasyGui 包:
from easygui import *

这使得我们更容易调用 EasyGui 的函数,可以直接这样编写代码:
msgbox(…)

方法三:使用类似下边的 import 语句:
import easygui as g

这样可以让你保持 EasyGui 的命名空间,同时减少你的打字数量。导入之后你就可以这么调用 EasyGui 的函数:
g.msgbox(…)

建议不要在 IDLE 上运行 EasyGui
“EasyGui 是运行在 Tkinter 上并拥有自身的事件循环,而 IDLE 也是 Tkinter 写的一个应用程序并也拥有自身的事件循环。因此当两者同时运行的时候,有可能会发生冲突,且带来不可预测的结果。因此如果你发现你的 EasyGui 程序有这样的问题,请尝试在 IDLE 外去运行你的程序。”

所以,点击 *.py打开就好了。

一、用于登记用户账号信息的界面

multenterbox(msg=‘Fill in values for the fields.’, title=’ ', fields=(), values=())

multenterbox() 为用户提供多个简单的输入框,要注意以下几点:

如果用户输入的值比选项少的话,则返回列表中的值用空字符串填充用户为输入的选项。
如果用户输入的值比选项多的话,则返回的列表中的值将截断为选项的数量。
如果用户取消操作,则返回域中的列表的值或者None值

import easygui as g
'''实现一个用于登记用户账号信息的界面(带*号的是必填项,要求有输入且不能是空格)'''
msg = '输入你的个人信息'
title = '登录界面'
fieldNames = ['*账号名', '*密码', '地址', '联系电话', '邮箱地址']
fieldValues = []  #创建一个空列表存放账号信息
fieldValues = g.multenterbox(msg,title,fieldNames)

#确保带*号的信息不为空
while 1:
    if fieldValues == None:
        break
    errmsg = ''
    for i in range(len(fieldNames)):
        option = fieldNames[i].strip()
        if fieldValues[i].strip() == "" and option[0] == "*":
            errmsg = errmsg + ('"%s"是必填项.\n\n' % fieldNames[i])
    if errmsg == "":
        break
    fieldValues = g.multenterbox(errmsg, title, fieldNames, fieldValues)

print("个人信息:", fieldValues)

得到GUI:
在这里插入图片描述
在这里插入图片描述
图像总结:
在这里插入图片描述
在这里插入图片描述
补充:
Python strip()方法
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

strip()方法语法:

str.strip([chars]);
#删除首尾空格
fieldValues[i].strip()

二、文件夹浏览框,打开txt并显示内容

fileopenbox(msg=None, title=None, default=’*’, filetypes=None)

fileopenbox() 函数用于提供一个对话框,返回用户选择的文件名(带完整路径哦),如果用户选择"Cancel"则返回 None。

关于 default 参数的设置方法:

default 参数指定一个默认路径,通常包含一个或多个通配符。
如果设置了 default 参数,fileopenbox() 显示默认的文件路径和格式。
default 默认的参数是’*’,即匹配所有格式的文件。

例如:

default=“c:/fishc/*.py” 即显示 C:\fishc 文件夹下所有的 Python 文件。
default="c:/fishc/test.py" 即显示 C:\fishc 文件夹下所有的名字以 test 开头的 Python 文件。

关于 filetypes 参数的设置方法:(不懂)

可以是包含文件掩码的字符串列表,例如:filetypes = [".txt"]
可以是字符串列表,列表的最后一项字符串是文件类型的描述,例如:filetypes = ["
.css", [".htm", ".html", “HTML files”]]

textbox(msg=’’, title=’ ‘, text=’’, codebox=0)

textbox() 函数默认会以比例字体(参数 codebox=1 设置为等宽字体)来显示文本内容(会自动换行哦),这个函数适合用于显示一般的书面文字。
注:text 参数(第三个参数)可以是字符串类型,列表类型,或者元祖类型。

import easygui as g
import os
#提供一个文件夹浏览框,让用户选择需要打开的文本文件,打开并显示文件内容
file_path = g.fileopenbox(default = '*.txt') #fileopenbox() 函数用于提供一个对话框,返回用户选择的文件名

with open(file_path) as f:
    title = os.path.basename(file_path) #os.path.basename(path)去掉路径,单独返回文件名
    msg = '文件【%s】的内容如下:' %title
    text = f.read()
    g.textbox(msg, title, text)

得到GUI:
在这里插入图片描述
在这里插入图片描述

补充:
1.使用 with as 操作已经打开的文件对象(本身就是上下文管理器),无论期间是否抛出异常,都能保证 with as 语句执行完毕后自动关闭已经打开的文件。
with as 语句的基本语法格式为:

with 表达式 [as target]:

    代码块

此格式中,用 [] 括起来的部分可以使用,也可以省略。
其中,target 参数用于指定一个变量,该语句会将 expression 指定的结果保存到该变量中。with as 语句中的代码块如果不想执行任何语句,可以直接使用 pass 语句代替。

图片总结:
在这里插入图片描述

文件浏览框增强版,修改后选择如何保存

buttonbox(msg=’’, title=’ ', choices=(‘Button1’, ‘Button2’, ‘Button3’), image=None, root=None)

可以使用 buttonbox() 定义自己的一组按钮,buttonbox() 会显示一组你定义好的按钮。

当用户点击任意一个按钮的时候,buttonbox() 返回按钮的文本内容。如果用户取消取消或者关闭窗口,那么会返回默认选项(第一个选项)。

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

filesavebox() 函数提供一个对话框,让用户选择文件需要保存的路径(带完整路径哦),如果用户选择"Cancel"则返回 None。

default 参数应该包含一个文件名(例如当前需要保存的文件名),也可以设置为空的,或者包含一个文件格式掩码的通配符。

import easygui as g
import os
'''提供一个文件夹浏览框,让用户选择需要打开的文本文件,打开文件并显示文件内容
当用户点击“ok"按钮时,比较当前文件是否修改过,如果修改过,
则提示“覆盖保存”、“放弃保存”、“另存为”并实现相应功能。
'''
file_path = g.fileopenbox(default='*.txt')

with open(file_path) as old_file:
    title = os.path.basename(file_path)
    msg = '文件【%s】的内容如下:' % title
    text = old_file.read()
    text_after = g.textbox(msg, title, text)

if text != text_after[:-1]:
    #textbox的返回值会追加一个换行符
    choice = g.buttonbox('文件已修改,请做出选择:', '警告', ('覆盖保存', '放弃保存', '另存为'))
    if choice == '覆盖保存':
        with open(file_path,'w') as old_file:
            old_file.write(text_after[:-1])
    if choice == '放弃保存':
        pass
    if choice == '另存为':
        another_path = g.filesavebox(default = '.txt')  #filesavebox() 函数提供一个对话框,让用户选择文件需要保存的路径
        if os.path.splitext(another_path)[1] != '.txt':  #分离文件名与扩展名,返回(f_name,f_extension)元祖
            another_path += '.txt'
    with open(another_path, 'w') as new_file:
        new_file.write(text_after[:-1])

得到GUI+图片总结:
在这里插入图片描述
filesavebox:
在这里插入图片描述
补充:
1.Python[-1]
表示索引,index:
-1就是倒数第一个元素,索引从左往右是0,1,2,3……从右往左是-1,-2,-3……

2. print(a[:-1])
除了最后一个取全部

3.print(a[::-1])
取从后向前(相反)的元素

4.print(a[2::-1])
取从下标为2的元素翻转读取

5.b = a[i:j]
表示复制a[i]到a[j-1],生成新的list

i默认为0,即 a[:3]相当于 a[0:3]
j默认为len(alist), 即a[1:]相当于a[1:10]
当i,j都缺省时,a[:]就相当于完整复制一份a

图片总结:
在这里插入图片描述

学习来源:
B站小甲鱼视频
https://www.iteye.com/blog/javablogs-2098369
https://cloud.tencent.com/developer/article/1382638
https://www.cnblogs.com/fuqia/p/8992438.html
https://blog.csdn.net/mingyuli/article/details/81604795
https://www.cnblogs.com/mxh1099/p/5804064.html
https://www.cnblogs.com/jqpy1994/p/12077263.html

标签:None,title,Python,default,file,path,easygui,图形用户界面
来源: https://blog.csdn.net/weixin_43981427/article/details/104717885