tkinter模块解读和使用

之前有个项目需要带多个不太懂代码的小伙伴测试,而且测试前置条件比较多,必须使用自动化,最终选择tkinter库做图形化界面。

一、大致了解tkinter

整理成思维导图

 二、编写脚本,打包成exe文件

写了一个demo如下,点击按钮可以调用不同函数,并且打印日志到text框里

mport time
from tkinter import *

LOG_LINE_NUM = 0


class MigrateTest:
    def __init__(self, init_window):
        # 创建主窗口对象
        self.init_window = init_window
        # 定义主窗口属性
        self.init_window.title("云厂商迁移测试 developed by ronghuang")

    def layout(self):
        """控件布局"""
        lables = [
                  {'用户信息': {'row': 0, 'column': 0}},
                  {'手机号': {'row': 1, 'column': 0}},
                  {'密码': {'row': 1, 'column': 2}},
                  {'迁移的表': {'row': 1, 'column': 4}}
                  ]
        for lable in lables:
            for key, value in lable.items():
                Label(master=self.init_window, text=key).grid(**value)

        # Entry
        entry_list = [
                      {'info_phone': {'row': 1, 'column': 1}},
                      {'info_pwd': {'row': 1, 'column': 3}},
                      {'info_table': {'row': 1, 'column': 5}}
                      ]
        for entry in entry_list:
            for key, value in entry.items():
                setattr(self, key, Entry(master=self.init_window))
                getattr(self, key).grid(**value)

        # text 控件:存放log
        setattr(self, 'log_text', Text(self.init_window, width=80, height=50))
        getattr(self, 'log_text').place(x=120, y=62)

        # button: command
        buttons = [{'堵塞io': 'self.prinf'}, {'删除堵塞': 'self.prinf'}, {'查询堵塞': 'self.prinf'},
                   {'切换到七牛':'self.prinf'}, {'切换到阿里':'self.prinf'}, {'切换到自建存储':'self.prinf'},
                   {'切换到腾讯':'self.prinf'}, {'查询服务端bucket':'self.prinf'}, {'查询服务端路由':'self.prinf'},
                   {'重置账号密码':'self.prinf'}, {'关闭当前窗口':'self.init_window.destroy'}]
        for button in buttons:
            for text, command in button.items():
                button_bloke = Button(self.init_window, text=text, command=eval(command), width=15)
                row = (buttons.index(button) + 1) * 2 + 1
                button_bloke.grid(row=row, column=0)  #0:3,1:5,2:7

    def write_log(self, msg):
        log_lines = 20
        global LOG_LINE_NUM
        current_time = time.strftime('%Y-%m-%d %H:%M:%S')

        logmsg_in = str(current_time) +" " + str(msg) + "\n"      # 换行
        if LOG_LINE_NUM <= log_lines:
            getattr(self, 'log_text').insert(END, logmsg_in)
            LOG_LINE_NUM += 1
        else:
            getattr(self, 'log_text').delete(1.0, 2.0)
            getattr(self, 'log_text').insert(END, logmsg_in)

    # 功能函数
    def get_info(self):
        # for attr in ['info_phone', 'info_pwd', 'info_table']:
        #     arrti_list = []
        #     arrti_list.append(getattr(self, attr).get())
        arrti_list = [getattr(self, attr).get() for attr in ['info_phone', 'info_pwd', 'info_table']]
        self.write_log(tuple(arrti_list))
        return tuple(arrti_list)

    def prinf(self):
        # 输出到界面
        arrti_list = []
        for attr in ['info_phone', 'info_pwd', 'info_table']:
            arrti_list.append(getattr(self, attr).get())
        self.write_log(tuple(arrti_list))
        return tuple(arrti_list)


def run_main():
    """运行主函数"""
    init_window = Tk()
    migrate = MigrateTest(init_window)
    migrate.layout()
    init_window.mainloop()


if __name__ == '__main__':
    run_main()

打包exe文件:

依赖第三方库:pyinstaller

使用命令:pyinstaller -D filename.py

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值