用Python3和tkinter开发简单图形界面程序
源码库: program-in-chinese/wubi_code_editor
起因在这里. 由于此项目和汉字相关, 个人也想尝试Python的图形界面开发, 于是开始尝试.
遇到的一个坑. 用户测试时, 发现png图片加载不了, 后发现是由于tkinter版本问题: Tkinter.PhotoImage doesn't not support png image
现在还处于原型状态, 两百多行代码都在一个文件中. 几个主要问题:
- 界面需要分离, 与界面无关的部分需要添加测试用例
- 文件路径只支持Linux/Mac, 还需支持Windows, 参考: Python 3 Quick Tip: The easy way to deal with file paths on Windows, Mac and Linux
- 完善功能: 支持对缺失数据的添加, 按编码范围导出到不同文件(出处); 按字搜索; 笔顺数据; Unicode 编码区
- 在VS code下开发, 还没使用测试/调试相关功能. 参考: Python in Visual Studio Code
源码节选:
读入csv源数据:
def 读入源数据文件(self, 文件名): # 官方文档参考: https://docs.python.org/3/library/csv.html#module-contents with open(文件名, newline='') as 源数据文件: 源数据读取器 = csv.reader(源数据文件, delimiter=',') for 行 in 源数据读取器: self.字符列表.append(行)
导出csv文件:
def 导出文件(self): with open(常量_修改后文件, 'w', newline='') as 目标文件: 写文件 = csv.writer(目标文件, delimiter=',') for 字符 in self.字符列表: 写文件.writerow(字符) print("修改保存到: " + 常量_修改后文件)
创建图片显示:
# 显示图片, 参考: https://stackoverflow.com/questions/35024118/how-to-load-an-image-into-a-python-3-4-tkinter-window def 创建图片显示(self, 区域, 字体名, 位置): 字体区 = Frame(区域) 字体区.pack(side = 位置) 字体提示 = Label(字体区, text = 字体名) 字体提示.pack() 图片路径 = 常量_图片主目录 + 常量_图片路径[字体名] + self.图片子路径 print(图片路径) try: 图片 = PhotoImage(file=图片路径) except: print("找不到图片") 图片 = PhotoImage() 图片显示 = Label(字体区, image=图片) 图片显示.image = 图片 图片显示.pack() return 图片显示
----------- 10/1/2018 更新 ------------
功能和重构基本完成. 还剩下一个问题"文件路径只支持Linux/Mac, 还需支持Windows", 由于题主只在Linux下使用, 暂不打算实现.
经过添加测试, 发现了几个bug.
承蒙题主宣传: 感谢 xuanwu 制作五笔编码编校软件 Python 版 - V2EX
---------- 12/24/2018 更新 ----------
上个月题主提交了好几个PR, 很高兴看到原本的纯用户成为了合作者. 最近的在国内原创开源项目中使用中文命名的意义与方式一文也受了这个实例的启发.
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java源码英翻中网页演示
在线演示地址: 源代码翻译 两部分如下. 独立的Java代码翻译库 续前文代码翻译尝试-使用Roaster解析和生成Java源码 源码库: program-in-chinese/java_code_translator 功能 在前文基础上: 重构; 完善测试(基本涵盖主要接口); 小改进 - 支持数组类型的属性和方法返回类型的翻译, 如"String[]" -> "字符串[]" 源码节选 翻译Java代码.java, 按类/Bean属性/方法三部分翻译命名. 仍不处理方法内容. public static String 翻译源码结构(String 源码) { JavaClassSource 类结构; try { 类结构 = 取类结构(源码); } catch (ParserException e) { return e.getLocalizedMessage(); } 翻译类(类结构); 翻译属性(类结构); 翻译方法(类结构); return 类结构.toUnformattedString(); } 部署 暂未发布到Maven, 在部署时, 运行'mvn install'安装j...
- 下一篇
[日常]用Python读取word文档中的表格并比较
最近想对某些word文档(docx)的表格内容作比较, 于是找了一下相关工具. 参考Automate the Boring Stuff with Python中的word部分, 试用了python-docx - python-docx 0.8.7 documentation 演示如下. 两个简单的word文档, 各有一个表格: 读取文档中的表格到列表(为演示只对单列表格操作): import docx def 取表格(文件名): 文件 = docx.Document(文件名) 首个表 = 文件.tables[0] 值 = [] for 行 in 首个表.rows: for 格 in 行.cells: 值.append(格.text) print(文件名 + " -> " + str(值)) return 值 表1 = 取表格('表1.docx') 读取结果: 表1.docx -> ['值1', '值2', '值3'] 接着找到这个做比较的python库seperman/deepdiff, 来源: Get difference between two lists from d...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题