python tkinter开发问题记录

python tkinter开发问题记录

记录一些自己使用tkinter中遇到的问题以及处理,记录不熟悉的api等等.

持续记录…

窗口相关

窗口大小以及居中显示

import tkinter

window = tkinter.Tk()
# 得到屏幕宽度
sw = window.winfo_screenwidth()
# 得到屏幕高度
sh = window.winfo_screenheight()
# 窗口宽高
ww = 800
wh = 600
x = (sw - ww) / 2
# 垂直居中 /2 即可
y = (sh - wh) / 4
# 设置窗口大小以及位置  此处通过计算居中显示
window.geometry("%dx%d+%d+%d" % (ww, wh, x, y))

图标相关

设置图标

root = tkinter.Tk()
root_ui = MainUI(root)
root.iconbitmap("icon.ico")
root.mainloop()

图标打包

编写脚本 topyico.py
import base64

open_icon = open("icon.ico", "rb")  # icon.icon为你要放入的图标
b64str = base64.b64encode(open_icon.read())  # 以base64的格式读出
open_icon.close()
write_data = "img=%s" % b64str
f = open("icon.py", "w+")  # 将上面读出的数据写入到icon.py的img数组中
f.write(write_data)
f.close()
设置图标
#原理:通过第一步使用base64把原图标 icon.ico转成py文件保存
# 在窗口初始化时,使用base64把 icon.py 文件内容 写入 icon.ico 生成临时图标 
# 通过root.iconbitmap("icon.ico") 设置图标后,删除本地临时图标 icon.ico
# 这样做的好处是 通过pyinstaller打包时 可以把icon.py打入exe
from icon import img
root = tkinter.Tk()
root_ui = MainUI(root)
root_ui.init_window()
# 设置窗口图标
tmp = open("icon.ico", "wb+")
tmp.write(base64.b64decode(img))  # 写入到临时文件中
tmp.close()
root.iconbitmap("icon.ico")
os.remove("icon.ico")
root.mainloop()

文件相关

选择文件

from tkinter import filedialog
path = filedialog.askopenfilename(title='选择文件',
                                          filetypes=[('图片', '.jpg'),
                                                     ('图片', '.bmp'),
                                                     ('图片', '.png'),
                                                     ('图片', '.jpeg')])

OS操作

# 显示当前使用的平台,'nt'表示Windows,'posix' 表示Linux
os.name
# 返回当前进程的工作目录
os.getcwd()
# 描述:列出目录下的所有文件和文件夹
os.listdir()
# 描述:命名文件或目录,能对相应的文件进行重命名
os.rename()
# 描述:返回文件的绝对路径
os.path.abspath(path)
# 描述:返回文件名包含后缀,纯粹字符串处理逻辑,路径错误也可以
os.path.basename(path)
# 描述:返回文件路径
os.path.dirname(path)
# 描述:把path中包含的""和"user"转换成用户目录
os.path.expanduser(path)
# 描述:把目录和文件名合成一个路径
# 1.如果各组件名首字母不包含’/’,则函数会自动加上
# 2.如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃
# 3.如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾
os.path.join(path1[, path2[, ...]])
# 描述:转换path的大小写和斜杠
os.path.normcase(path)
# 描述:规范path字符串形式
os.path.normpath(path)
# 描述:把路径分割成 dirname 和 basename,返回一个元组
os.path.split(path)
# 描述:遍历path,进入每个目录都调用visit函数,visit函数必须有3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有文件名,args则为walk的第三个参数
os.path.walk(path, visit, arg)
#穷举遍历一个文件夹里面的所有文件,并获取文件的目录名
abs_cur_dir ='xxx'
file_url=[]
for dirs,folders,files in os.walk(abs_cur_dir):
    for i in files:
            file_url.append(os.path.join(dirs,i))
print(file_url)

调用系统接口问题

调用os.system()出现cmd窗口问题

解决方法:使用subprocess替代

#举例:调用系统接口 打开文件目录并选中文件
from subprocess import run
# os.system(f'explorer /select, {real_path}')
command = f'explorer /select, {real_path}'
run(command, shell=True)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值