tkinter初步使用

背景

本来想用pyqt的,但是打包成exe的时候遇到了很多坑,各种报错,从而转tkinter了。
tkinter打包很简单,不易报错,打包成exe后能独立运行于没装环境的电脑。

代码

此代码为官方文档的样例,可以基于此代码扩展。对布局要求不高,一般用网格布局即可

  • 如果引用了图片文件,打包以后会报错。可以将图片转为base64变量写在代码里
from tkinter import *
from tkinter import ttk

class FeetToMeters:

    def __init__(self, root):

        root.title("Feet to Meters")

        mainframe = ttk.Frame(root, padding="3 3 12 12")
        mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
        root.columnconfigure(0, weight=1)
        root.rowconfigure(0, weight=1)

        self.feet = StringVar()
        feet_entry = ttk.Entry(mainframe, width=7, textvariable=self.feet)
        feet_entry.grid(column=2, row=1,columnspan=1 sticky=(W, E))
        self.meters = StringVar()

        ttk.Label(mainframe, textvariable=self.meters).grid(column=2, row=2, sticky=(W, E))
        ttk.Button(mainframe, text="Calculate", command=self.calculate).grid(column=3, row=3, sticky=W)

        ttk.Label(mainframe, text="feet").grid(column=3, row=1, sticky=W)
        ttk.Label(mainframe, text="is equivalent to").grid(column=1, row=2, sticky=E)
        ttk.Label(mainframe, text="meters").grid(column=3, row=2, sticky=W)

        for child in mainframe.winfo_children():
            child.grid_configure(padx=5, pady=5)

        feet_entry.focus()
        root.bind("<Return>", self.calculate)

    def calculate(self, *args):
        try:
            value = float(self.feet.get())
            self.meters.set(int(0.3048 * value * 10000.0 + 0.5) / 10000.0)
        except ValueError:
            pass
#打开文件弹窗
#self.open_file_path = askopenfilename(title="请选择一个要打开的html文件", filetypes=[("html", "*.html")])
#self.fileName.set(self.open_file_path.split('/')[-1])
#提示弹窗
#tkinter.messagebox.showinfo('提示', '成功搞定')

root = Tk()
FeetToMeters(root)
root.mainloop()

  • 以下代码是部分常用的操作
    def readFile(self,fileName):
		
        file = open(fileName, 'rb')
        msg = file.read()
        result = chardet.detect(msg)
        print(result)
        context = msg.decode(result['encoding'], 'strict')
        print(type(context))
        print(context)
        modified = context.replace('</body>', code)
        modified = modified.replace('</head>', code1)
        # file = open(fileName, 'w', encoding="utf-8")
        file = open(fileName, 'w', encoding=result['encoding'])
        file.write(modified)
        file.close()
        tkinter.messagebox.showinfo('提示', '成功搞定')
	#遍历文件
    def getFile(self,filePath):
        files = os.listdir(filePath)
        for file in files:
            file_d = os.path.join(filePath, file)
            if os.path.isdir(file_d):
                self.getFile(file_d)
            else:
                if '.html' in file_d:
                    print(file_d)
                    self.readFile(file_d)

打包

pip install PyInstaller
pyinstaller -F -i XXX.ico -w XXX.py
#-D :生成文件夹 -F生成一个EXE
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tkinter中设置窗口的透明度可以使用`attributes`方法,并将`-alpha`参数设置为一个介于0和1之间的数值。例如,`root.attributes("-alpha", 0.5)`将窗口的透明度设置为50%。\[2\] 请注意,透明度的数值越接近0,窗口就越透明,而数值越接近1,窗口就越不透明。 #### 引用[.reference_title] - *1* [tkinter叠加窗口实现部分透明](https://blog.csdn.net/tinga_kilin/article/details/107432276)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [tkinter窗口美化功能介绍 第一章 内部美化功能](https://blog.csdn.net/m0_66732591/article/details/126572698)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [PythonTkinter包系列之一:窗口初步](https://blog.csdn.net/cnds123/article/details/127227651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值