Tkinter Designer

  • Tkinter
  • Tkinter Designer介绍
  • Tkinter Designer使用
  • 🛠 安装 Tkinter Designer
  • 示例


Tkinter

先来看一段tkinter例子

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from tkinter import *
import hashlib
import time

LOG_LINE_NUM = 0

class MY_GUI():
    def __init__(self,init_window_name):
        self.init_window_name = init_window_name


    #设置窗口
    def set_init_window(self):
        self.init_window_name.title("文本处理工具_v1.2")           #窗口名
        #self.init_window_name.geometry('320x160+10+10')                         #290 160为窗口大小,+10 +10 定义窗口弹出时的默认展示位置
        self.init_window_name.geometry('1068x681+10+10')
        #self.init_window_name["bg"] = "pink"                                    #窗口背景色,其他背景色见:blog.csdn.net/chl0000/article/details/7657887
        #self.init_window_name.attributes("-alpha",0.9)                          #虚化,值越小虚化程度越高
        #标签
        self.init_data_label = Label(self.init_window_name, text="待处理数据")
        self.init_data_label.grid(row=0, column=0)
        self.result_data_label = Label(self.init_window_name, text="输出结果")
        self.result_data_label.grid(row=0, column=12)
        self.log_label = Label(self.init_window_name, text="日志")
        self.log_label.grid(row=12, column=0)
        #文本框
        self.init_data_Text = Text(self.init_window_name, width=67, height=35)  #原始数据录入框
        self.init_data_Text.grid(row=1, column=0, rowspan=10, columnspan=10)
        self.result_data_Text = Text(self.init_window_name, width=70, height=49)  #处理结果展示
        self.result_data_Text.grid(row=1, column=12, rowspan=15, columnspan=10)
        self.log_data_Text = Text(self.init_window_name, width=66, height=9)  # 日志框
        self.log_data_Text.grid(row=13, column=0, columnspan=10)
        #按钮
        self.str_trans_to_md5_button = Button(self.init_window_name, text="字符串转MD5", bg="lightblue", width=10,command=self.str_trans_to_md5)  # 调用内部方法  加()为直接调用
        self.str_trans_to_md5_button.grid(row=1, column=11)


    #功能函数
    def str_trans_to_md5(self):
        src = self.init_data_Text.get(1.0,END).strip().replace("\n","").encode()
        #print("src =",src)
        if src:
            try:
                myMd5 = hashlib.md5()
                myMd5.update(src)
                myMd5_Digest = myMd5.hexdigest()
                #print(myMd5_Digest)
                #输出到界面
                self.result_data_Text.delete(1.0,END)
                self.result_data_Text.insert(1.0,myMd5_Digest)
                self.write_log_to_Text("INFO:str_trans_to_md5 success")
            except:
                self.result_data_Text.delete(1.0,END)
                self.result_data_Text.insert(1.0,"字符串转MD5失败")
        else:
            self.write_log_to_Text("ERROR:str_trans_to_md5 failed")


    #获取当前时间
    def get_current_time(self):
        current_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
        return current_time


    #日志动态打印
    def write_log_to_Text(self,logmsg):
        global LOG_LINE_NUM
        current_time = self.get_current_time()
        logmsg_in = str(current_time) +" " + str(logmsg) + "\n"      #换行
        if LOG_LINE_NUM <= 7:
            self.log_data_Text.insert(END, logmsg_in)
            LOG_LINE_NUM = LOG_LINE_NUM + 1
        else:
            self.log_data_Text.delete(1.0,2.0)
            self.log_data_Text.insert(END, logmsg_in)


def gui_start():
    init_window = Tk()              #实例化出一个父窗口
    ZMJ_PORTAL = MY_GUI(init_window)
    # 设置根窗口默认属性
    ZMJ_PORTAL.set_init_window()

    init_window.mainloop()          #父窗口进入事件循环,可以理解为保持窗口运行,否则界面不展示


gui_start()

该例子来源于菜鸟教程Tkinter 编程 通过代码可知,我们需要自己一步一步装饰窗口,窗口的位置、展示都需要头疼很久。

Tkinter Designer介绍

Tkinter Designer 旨在加速 Python 中的 GUI 开发过程。 它使用著名的设计软件 Figma 使在 Python 中创建漂亮的 Tkinter GUI 变得轻而易举。

Tkinter Designer 使用 Figma API 来分析设计文件并创建 GUI 所需的python代码和静态文件。

python3 Tkinter 美化 tkinter窗口美化_tkinter


甚至 Tkinter Designer 的 GUI(上图) 也是使用 Tkinter Designer 创建的。

废话不多说我们来一步一步实践,来生成我们想要的tkinter的python代码。

Tkinter Designer使用

🛠 安装 Tkinter Designer

git clone https://github.com/ParthJadhav/Tkinter-Designer

cd Tkinter-Designer

pip3 install -r requirements.txt

python3 tkinter_designer.py

此时出现Tkinter Designer的GUI窗口。
分别有三个填写框:

  • tokenID
    Figma账户里生成的tokenID(记得注册哦)
    位置:账户头像-Settings-Account-Personal access tokens
    填写后,复制生成的token填写进Tkinter Designer去
  • FileUrl

    画好GUI图后分享复制链接,填写进Tkinter Designer去

注意: 画的GUI的Figma 元素名称是需要重命名的,这样生成的python代码才是正确的,Tkinter Designer里根据元素名称来生成对应“挂件”

Figma Element Name:改名成这列的元素对象

Tkinter Element

Button

Button

Rectangle

Rectangle

TextArea

Text Area

TextBox

Entry

Background

Canvas.Image()

例如:

python3 Tkinter 美化 tkinter窗口美化_python3 Tkinter 美化_02

  • Output Path
    输出的代码目录

最后点击生成,等待一会就可以看到输出目录多了一个文件夹

python3 Tkinter 美化 tkinter窗口美化_tkinter_03


直接执行window.py就会展示你的作品GUI哦

示例

示例1:

python3 Tkinter 美化 tkinter窗口美化_tkinter_04


示例2:

python3 Tkinter 美化 tkinter窗口美化_tkinter_05