- 目的:
- 做个工具给运营使用的一个exe, 让他们不要经常打断我工作(日常被打断思路,要崩溃了)
- 学习一下tkinter, 本来也可以用web做的~
- 效果(果然是丑的一逼):
.
学习过程
从网上了解到的tkinter基本知识:
- 窗体相关
- import tkinter as tk
- window = tk.Tk() 创造基本window, 所有操作基于这个画布上
- window.title('重命名title')
- window.geometry('400x400') [设置窗体大小,这里要用x而不是*哈哈]
- window.minsize(400, 200)/window.maxsize(400, 800) [最小最大窗体限制]
- window.mainloop() [这里就进入主循环]
- 菜单栏相关
- menubar = tk.Menu(window)
- window.config(menu=menubar)
- 组件
- 显示文案
- tips = tk.StringVar()
- tk.Label(face, textvariable=tips, fg='red')
- 输入
- var_usr_name = tk.StringVar()
- entry_usr_name = tk.Entry(face, textvariable=var_usr_name, font=('Arial', 14))
- entry_usr_name.get()拿到输入的东西
- 容器
- left_frame = tk.LabelFrame(self.main_frame, text='选择功能')
- 左侧选择栏
- listbox = tk.Listbox(
left_frame, width=12, font=('Arial', 10),
listvariable=tk.StringVar(value=[i['title'] for i in method_list]),
selectmode="browse"
) - listbox.bind("<
>", select_method) (绑定选择使用的方法) - listbox.curselection()[0] (获得当前选择的是哪个)
- listbox = tk.Listbox(
- 单选
- tk.Radiobutton(o, text=choice[i], variable=arg_widget, value=i).grid(column=0, row=i, sticky=tk.W)
- 组件摆放
- grid用起来顺手点,place可以在组件少的时候
- 其他的还是看附件的代码
- 显示文案
思路
-
服务端定义好一个控件的参数, 方便新增加功能控件, 不需要改客户端
登录完成的时候就去拿一下控件的参数,就像:
-
另外一个要点就是客户端能获取到服务端得功能列表,并循环创建windows,这里我用得一个办法是:
将生产页面的函数改成字符串,并使用列表的参数替换,最后eval并赋值给self作为对象的属性,如:
然后就在 api/v1/helper/modify-relation/ 这个接口写逻辑, 接受参数 inviter, invitee, is_force 0/1 了,