这是一个系列文章。下一篇【【二】为Python Tk GUI窗口添加一些组件和绑定一些组件事件】
使用python脚本写一个小工具。因为命令行运行的使用会有dos窗口,交互也不是很方便,开发环境运行也不方便分享给别人用,所以想到使用一个简单、易学、好上手的GUI工具给包装一下,达到一个直观、易用的目的,也可以打包分享给别人。
main_tk.py
# -*- coding: UTF-8 -*-
from tkinter import Tk # pip3 install tkinter
"""
首行配置输出中文乱码
引入tk依赖:最好使用from的方式引入,避免后续打包的时候会加入很多无用的包,造成运行文件过大
"""
class MainTk:
def __init__(self, root: Tk):
super().__init__()
if '__main__' == __name__:
tk = Tk()
main_tk = MainTk(root=tk)
# 启动窗口
tk.mainloop()
main_tk.py
# -*- coding: UTF-8 -*-
from tkinter import Tk
from tkinter.messagebox import askyesno
from threading import Thread
from sys import exit
"""
首行配置输出中文乱码
最好使用from的方式引入,避免后续打包的时候会加入很多无用的包,造成运行文件过大
"""
class MainTk:
"""MainTk: 主窗口配置对象"""
_root = None
"""私有成员变量,不能通过对象点的方式获得,必须通过get方式获取"""
_thread = None
"""线程对象"""
def __init__(self, root: Tk):
self._root = root
"""设置窗口大小和位置"""
width = 700 # 窗口宽度
height = 500 # 窗口高度
position_x = 300 # 窗口距离屏幕左边的水平距离
position_y = 100 # 窗口距离屏幕右边的水平距离
geometry = str(width) + 'x' + str(height) + '+' + str(position_x) + '+' + str(position_y)
self._root.geometry(geometry)
"""设置窗口标题"""
self._root.title('Tools')
"""设置窗口图标:图标路径,我这里logo放在运行main的当前目录"""
self._root.iconbitmap('logo.ico')
"""点击右上角关闭窗口的监听"""
self._root.protocol("WM_DELETE_WINDOW", lambda: self.thread_it(self.close_app()))
def thread_it(self, func, *args):
self._thread = Thread(target=func, args=args, daemon=True)
self._thread.start()
def close_app(self):
ans = askyesno(title='提示', message='是否确定退出程序?')
if ans:
# 销毁窗口
self._root.destroy()
exit()
else:
return None
# 程序入口
if '__main__' == __name__:
tk = Tk()
main_tk = MainTk(root=tk)
# 启动窗口
tk.mainloop()