python语言可换主题ttk界面从服务器拿日志文件

编程入门 行业动态 更新时间:2024-10-26 20:23:30

python语言<a href=https://www.elefans.com/category/jswz/34/1736646.html style=可换主题ttk界面从服务器拿日志文件"/>

python语言可换主题ttk界面从服务器拿日志文件

简单界面tkinter库,稍微美化界面就安装一下ttkthemes

pip3 install ttkthemes

简单使用

themes = ttkthemes.THEMESthemesName = themes[random.randint(0, len(themes) - 1)]print('主题 ' + themesName)top = ttkthemes.ThemedTk(theme=themesName, toplevel=True, themebg=True)# top = Tk()

这样代码只能是启动的时候就定下来主题,运行中要更换记得要同时设置一下背景和字体

采用vb插件画好基础界面,使用中又添加了些小功能

class Application_ui(Frame):# The class will create all widgets for UI.def __init__(self, master=None):Frame.__init__(self, master)self.master.title('拿日志文件')self.master.protocol('WM_DELETE_WINDOW', self.EV_WM_DELETE_WINDOW)# To center the window on the screen.w = 800h = 300ws = self.master.winfo_screenwidth()hs = self.master.winfo_screenheight()x = (ws / 2) - (w / 2)y = (hs / 2) - (h / 2)self.master.geometry('%dx%d+%d+%d' % (w, h, x, y))self.createWidgets()self.Combo1.current(0)def createWidgets(self):self.top = self.winfo_toplevel()if os.path.exists("sd.png"):self.top.iconphoto(True, PhotoImage(file='sd.png'))self.style = Style()self.Text1Font = Font(font=('阿里巴巴普惠体', 11))self.style.configure('.', font=self.Text1Font)self.Label1Var = StringVar(value='目标')self.style.configure('TLabel1.TLabel', anchor='w', font=self.Text1Font)self.Label1 = Label(self.top, text='目标', textvariable=self.Label1Var, style='TLabel1.TLabel')self.Label1.setText = lambda x: self.Label1Var.set(x)self.Label1.text = lambda: self.Label1Var.get()self.Label1.place(relx=0.026, rely=0.054, relwidth=0.06, relheight=0.08)self.Combo1List = ['192.168.45.116', '192.168.45.251', '192.168.45.235', '192.168.70.23', '192.168.70.24', ]self.Combo1Var = StringVar(value='192.168.45.116')self.Combo1 = Combobox(self.top, text='192.168.45.116', textvariable=self.Combo1Var, values=self.Combo1List, font=self.Text1Font)self.Combo1.setText = lambda x: self.Combo1Var.set(x)self.Combo1.text = lambda: self.Combo1Var.get()self.Combo1.place(relx=0.1, rely=0.054, relwidth=0.22)self.Command2Var = StringVar(value='拿文件')self.style.configure('TCommand2.TButton', font=self.Text1Font)self.Command2 = Button(self.top, text='拿文件', textvariable=self.Command2Var, command=self.Command2_Cmd, style='TCommand2.TButton')self.Command2.setText = lambda x: self.Command2Var.set(x)self.Command2.text = lambda: self.Command2Var.get()self.Command2.place(relx=0.82, rely=0.4, relwidth=0.14)self.Command1Var = StringVar(value='退出')self.style.configure('TCommand1.TButton', font=self.Text1Font)self.Command1 = Button(self.top, text='退出', textvariable=self.Command1Var, command=self.Command1_Cmd, style='TCommand1.TButton')self.Command1.setText = lambda x: self.Command1Var.set(x)self.Command1.text = lambda: self.Command1Var.get()self.Command1.place(relx=0.82, rely=0.7, relwidth=0.14)self.Text1 = Text(self.top, font=self.Text1Font)self.Text1.place(relx=0.026, rely=0.187, relwidth=0.776, relheight=0.726)self.Text1.insert('1.0', 'Text1')self.topRadioVar = StringVar(value='1')self.style.configure('TOption2.TRadiobutton', font=self.Text1Font)self.Option2 = Radiobutton(self.top, text='缓存', value='1', variable=self.topRadioVar, style='TOption2.TRadiobutton')self.Option2.setValue = lambda x: self.topRadioVar.set('1' if x else '0')self.Option2.value = lambda: 1 if self.topRadioVar.get() == '1' else 0self.Option2.place(relx=0.43, rely=0.054, relwidth=0.09, relheight=0.1)self.style.configure('TOption1.TRadiobutton', font=self.Text1Font)self.Option1 = Radiobutton(self.top, text='实时', value='0', variable=self.topRadioVar, style='TOption1.TRadiobutton')self.Option1.setValue = lambda x: self.topRadioVar.set('0' if x else '1')self.Option1.value = lambda: 0 if self.topRadioVar.get() == '0' else 1self.Option1.place(relx=0.34, rely=0.054, relwidth=0.09, relheight=0.1)self.style.configure('TLabel2.TLabel', anchor='w', font=self.Text1Font)self.Label2 = Label(self.top, text='主题', style='TLabel2.TLabel')self.Label2.place(relx=0.74, rely=0.054, relwidth=0.06, relheight=0.08)self.Combo2List = ['adapta', 'arc', 'winxpblue', 'smog', 'scidblue', 'yaru', ]self.Combo2Var = StringVar(value='arc')self.Combo2 = Combobox(self.top, text='arc', textvariable=self.Combo2Var, values=self.Combo2List, font=self.Text1Font)self.Combo2.setText = lambda x: self.Combo2Var.set(x)self.Combo2.text = lambda: self.Combo2Var.get()self.Combo2.place(relx=0.82, rely=0.054, relwidth=0.14)self.Combo2Var.trace('w', self.Combo2_Change)self.Combo2.bind('<<ComboboxSelected>>', self.Combo2_Change)

然后是具体调用功能代码

class Application(Application_ui):# The class will implement callback function for events and your logical code.def __init__(self, master=None):Application_ui.__init__(self, master)self.host_ip = extract_ip()self.Combo1.set(self.host_ip)def change_theme(root, themes_name):"""更改风格"""print(themes_name)style = ttkthemes.ThemedStyle(root)style.set_theme(themes_name)color = Style(root).lookup("TFrame", "background", default="white")root.top.config(background=color)root.style.configure('.', font=root.Text1Font)def EV_WM_DELETE_WINDOW(self, event=None):if askyesno(title='退出确认', message='请问是否要退出?'):self.master.destroy()def Command2_Cmd(self, event=None):ip = self.Combo1.get()print(ip)r = requests.get('http://%s:8080/uploadFile?ext=1&type=%s' % (ip, self.topRadioVar.get()))file = r.content.decode()self.Text1.insert(INSERT, file + '\n')if ip == self.host_ip:os.system('scp qzc@%s:%s %s' % (ip, file, os.getcwd()))else:os.system('scp root@%s:%s %s' % (ip, file, os.getcwd()))self.Text1.insert(INSERT, os.getcwd() + '\n')def Combo2_Change(self, *args):print(self.Combo2.get())self.change_theme(self.Combo2.get())def Command1_Cmd(self, event=None):e = askyesno(title='退出确认', message='请问是否要退出?')if e:self.quit()

原理很简单,通过http接口拿到服务器文件名,然后用scp命令把文件下载到本地,记得是通过命令ssh-copy-id -i root@192.168.70.23事先向服务器认证过了,否则拿文件时因为没输入密码失败

用到一个查询本机ip地址公用函数

def extract_ip():"""查询本机ip地址:return:"""try:s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.connect(('10.255.255.255', 1))ip = s.getsockname()[0]except Exception:ip = '127.0.0.1'finally:s.close()return ip

可以编译成独立文件脱离python环境使用

pyinstaller -F -w getjclog.py

linux下面文件本身没有图标,编译命令就不需要加ico了,运行起来如果想再任务栏显示图标,可以放一个sd.png文件到可执行文件同路径下

更多推荐

python语言可换主题ttk界面从服务器拿日志文件

本文发布于:2024-02-12 08:19:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1686933.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:可换   界面   语言   服务器   文件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!