【Python】 GUI Headers格式化小工具

4次阅读
没有评论

在学习爬虫的时候,经常会遇到需要自己复制headers手动打引号的蛋疼问题

于是就用tkinter写了这么一款gui小工具

可以把浏览器复制的headers直接转换为python字典格式

效果。

感谢10楼@O_o 老哥,现使用python原生库json.dumps的indent属性添加缩进
给控件之间增加了边距,比之前美观了一些

转换后直接ctrl A + ctrl C 复制完然后就可直接粘贴到python代码里使用

下载链接:https://wwi.lanzoui.com/b01io8ugd 访问密码2333

代码。
[Python] 纯文本查看 复制代码

from tkinter import *
import tkinter.font
import json

class Header:
def __init__(self):
self.root = Tk()
self.root['bg'] = "white"
self.root.title("Headers格式化")
self.root.geometry('640x310')
self.root.resizable(0, 0)
self.ft = tkinter.font.Font(family='微软雅黑', size=10, weight='normal', slant='roman', underline=0,)
self.txt1 = tkinter.Text(self.root, relief="solid", wrap='none', font=self.ft)
self.txt1.place(x=10, y=0, width=250, height=300)
self.bind_menu(self.txt1)
self.txt2 = tkinter.Text(self.root, relief="solid", wrap='none', font=self.ft)
self.txt2.place(x=380, y=0, width=250, height=300)
self.bind_menu(self.txt2)
self.btn = tkinter.Button(self.root, text="转换>>", width=10, height=4, relief="groove", font=self.ft, command=self.format_str)
self.btn.place(x=270, y=50, width=100, height=80)
self.btn2 = tkinter.Button(self.root, text="清空", width=10, height=4, relief="groove", font=self.ft, command=self.clear)
self.btn2.place(x=270, y=150, width=100, height=80)
self.root.mainloop()
def deal_str(self):
data = {}
lt = [x for x in self.txt1.get(1.0, "end").strip().split('\n') if x]
for each in lt:
i = each.index(":", 1) if each[0] == ":" else each.index(":")
key = each[:i]
word = each[i + 1:]
if not word:
word = ""
key = key.strip()
word = word.strip()
data[key] = word
return data
def format_str(self):
self.txt2.delete(0.0, "end")
try:
data = self.deal_str()
if not data:
return
except:
self.txt2.insert(END, "转换失败")
return
data = json.dumps(data, indent=4)
self.txt2.insert(END, data)
self.txt2.focus()
return
# text = "{\n"
# for k, v in data.items():
# text += f"\t'{k}': '{v}',\n" if v != '""' else f"\t'{k}': '',\n"
# text += "}"
# self.txt2.insert(END, text)
# self.txt2.focus()
# return
def bind_menu(self, editor):
menubar = Menu(self.root, tearoff=False)
def rightkey(event, editor):
menubar.delete(0, END)
menubar.add_command(label='复制(Ctrl + C)', command=lambda: editor.event_generate('<<Copy>>'))
menubar.add_command(label='粘贴(Ctrl + V)', command=lambda: editor.event_generate('<<Paste>>'))
menubar.add_command(label='剪切(Ctrl + X)', command=lambda: editor.event_generate("<<Cut>>"))
menubar.add_command(label='全选(Ctrl + A)', command=lambda: editor.event_generate('<<SelectAll>>'))
menubar.post(event.x_root, event.y_root)
editor.bind("<Button-3>", lambda x: rightkey(x, editor))
return
def clear(self):
self.txt1.delete(0.0, "end")
self.txt2.delete(0.0, "end")
return

if __name__ == '__main__':
Header()

正文完
 0
116博客
版权声明:本篇文章由 116博客 于2024-12-01发表,共计2457字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码