tkinter库:python的GUI库,可以实现图形化界面。
app功能: 将输入的文本全部转成小写或大写。
实现:使用一个类来实现app,定义一个类UpLower, 具体实现如下:
一、__init__函数(构造函数)初始化, 初始化整个图形化界面。
1、创建窗口:
tk.TK() :创建应用程序的主窗口。
root.title():给窗口设置标题。
root.geometry():设置窗口的大小。
root.resizable():固定窗口大小。
2、创建输入框, 用来输入要转换的文本
tk.Label(): 是一个创建标签组件的类,主要用来显示文本或者图片。
tk.Entry(): 是一个输入框,可以输入文本。
.place(): 方法用于绝对定位组件,x 参数指定组件左上角相对于其父容器左边缘的水平位置,而 y参数指定组件左上角相对于其父容器顶部的垂直位置, 相关布局方式还有grid()、pack()。
3、创建按钮,用来实现点击转换的功能
tk.Button(): 创建Button按钮组件。
command参数介绍:是用来绑定点击之后应该实现具体逻辑的(函数), 传参需要用lambda表达式。
4、创建文本框用来打印结果
tk.Text(): 创建文本框组件。
5、让整个窗口一直显示,并响应用户各种事件
root.mainloop(): 是在使用 Python 的 tkinter 库创建图形用户界面(GUI)应用程序时使用的方法。这个方法启动了 Tkinter 的主事件循环,允许应用程序等待并响应用户的各种事件,如鼠标点击、按键、窗口关闭等。
二、功能函数的实现
1、大小写转换函数
分析:使用get()方法获取输入框中文本,并使用默认值1或0来判断是转大写还是转小写,如果是转大写,就调用upper()方法将文本转成大写,如果是转小写,就调用lower()方法将文本转成小写, 然后先清空文本框(防止追加),再将结果显示再文本框。
这里使用了tk.messagebox.showinfo()来提示用户输入内容(如果没输入内容的话)。
.Delet(): 用来清空内容,参数1表示开始,参数2表示结尾,1.0表示第一行的开始,tk.END表示结尾。
.Insert(): 用来插入文本,参数1表示插入位置, 参数2表示要插入的字符串。
2、清空函数的实现
点击清空之后,会将输入框和文本框中的内容全部清空。
三、将程序打包成可执行文件(.exe)
1、安装打包工具:pip install pyinstaller
2、在python文件的目录下输入:pyinstaller -F -w app.py
说明:
pyinstaller:调用 PyInstaller 工具。
-F:创建一个单个可执行文件。这意味着所有的代码和资源都会被打包到一个单独的文件中。
-w:防止显示控制台窗口。这在创建 GUI 应用程序时很有用,因为用户不需要看到命令行界面。
app.py:指定要打包的 Python 脚本文件名。
3、打包之后会出现build和dist这两个文件夹, .exe文件就在dist文件下面。
将这两个文件夹放到一个文件夹下打包发给被人是可以用的,也可以创建桌面快捷方式。
四、效果图
五、源代码
import tkinter as tk
import tkinter.messagebox
class UpLower:
def __init__(self):
# 主窗口
root = tk.Tk()
root.title('大小写转换器v1.0')
root.geometry("800x300")
root.resizable(False, False)
# 创建输入框
self.entry_label = tk.Label(root, text="输入框: ")
self.entry = tk.Entry(root, width=100)
self.entry_label.place(x=0, y=0)
self.entry.place(x=45, y=0)
# 添加按钮
self.btn_transition_upper = tk.Button(root, text="转大写", command=lambda: self.upper_lower(1))
self.btn_transition_lower = tk.Button(root, text="转小写", command=lambda: self.upper_lower(0))
self.btn_transition_clear = tk.Button(root, text="清空", command=self.clear)
self.btn_transition_upper.place(x=120, y=50)
self.btn_transition_lower.place(x=360, y=50)
self.btn_transition_clear.place(x=600, y=50)
# 输出文本框
self.text_label = tk.Label(root, text="结果:")
self.res_text = tk.Text(root, width=100, height=10)
self.text_label.place(x=0, y=100)
self.res_text.place(x=35, y=100)
root.mainloop()
# 大小写转换函数
def upper_lower(self, flag):
obj_str = self.entry.get()
if obj_str == '':
tk.messagebox.showinfo('提示', "请输入内容!")
return
res_str = obj_str.upper() if flag == 1 else obj_str.lower()
self.res_text.delete(1.0, tk.END) # 清除上一次显示的内容
self.res_text.insert(tk.END, res_str) # 显示结果
# 清空函数
def clear(self):
self.entry.delete(0, tk.END) # 清空输入框
self.res_text.delete(1.0, tk.END) # 清空文本框
if __name__ == '__main__':
UpLower()