Tkinterfile
文章目录
案例1.辞职小软件

import tkinter as tk
from tkinter import messagebox
from random import random
root=tk.Tk()
root.geometry('500x300+100+100')
root.title('fef')
frame1=tk.Frame(root)
frame1.pack()
tk.Label(frame1,text='尊敬的各位领导',font=24,padx=30,pady=30).pack(side=tk.LEFT,anchor=tk.N)
img=tk.PhotoImage(file='t.png')
label_img=tk.Label(frame1,image=img,padx=30,pady=30,bd=0)
label_img.pack(side=tk.LEFT,anchor=tk.N)
tk.Label(frame1,text='辞职人:正心',height=25,font=20,padx=30,pady=30,anchor=tk.S).pack(side=tk.LEFT)
yes_img=img
no_img=img
yes_btn=tk.Button(frame1,text='yes',bd=0)
no_btn=tk.Button(frame1,text='no',bd=0)
yes_btn.place(relx=0.3,rely=0.8,anchor=tk.CENTER)
no_btn.place(relx=0.7,rely=0.8,anchor=tk.CENTER)
frame2=tk.Frame(root)
# frame2.pack()
tk.Label(frame2,text='ffsdfcdcaf',font=('黑体',18),
justify=tk.LEFT,
height=300,
fg='red',
padx=50).pack()
tk.Button(frame2,text='exit',command=root.quit).place(relx=0.9,rely=0.8)
def on_exit():
messagebox.showwarning(title='ff',message='此路不通')
root.protocol('WM_DELETE_WINDOW',on_exit)
def move(event):
no_btn.place(relx=random(),rely=random(),anchor=tk.CENTER)
no_btn.bind('<Enter>',move)
def sure():
frame1.pack_forget()
frame2.pack()
yes_btn.config(command=sure)
root.mainloop()
案例2.记事本布局

#记事本布局
import tkinter as tk
root=tk.Tk()
root.title('记事本')
root.geometry('800x500+100+100')
menu=tk.Menu(root,tearoff=False)
file_menu=tk.Menu(menu,tearoff=False)
file_menu.add_command(label='新建')
file_menu.add_command(label='打开')
file_menu.add_command(label='保存')
file_menu.add_command(label='另存为')
menu.add_cascade(label='文件',menu=file_menu)
edit_menu=tk.Menu(menu,tearoff=False)
edit_menu.add_command(label='撤销')
edit_menu.add_command(label='重做')
edit_menu.add_command(label='复制')
edit_menu.add_command(label='粘贴')
edit_menu.add_command(label='剪切')
menu.add_cascade(label='编辑',menu=edit_menu)
about_menu=tk.Menu(menu,tearoff=False)
about_menu.add_command(label='作者')
about_menu.add_command(label='版权')
menu.add_cascade(label='关于',menu=about_menu)
status_str_var=tk.StringVar() #StringVar是Tk库内部定义的字符串变量类型,在这里用于管理部件上面的字符;
status_str_var.set("字符数{}".format(0))
status_label=tk.Label(root,textvariable=status_str_var,bd=1,relief=tk.SUNKEN,anchor=tk.W)
status_label.pack(side=tk.BOTTOM,fill=tk.X)
var_line=tk.StringVar()
line_label=tk.Label(root,textvariable=var_line,width=1,bg='#faebd7',anchor=tk.N,font=18)
line_label.pack(side=tk.LEFT,fill=tk.Y)
text_pad=tk.Text(root,font=18)
text_pad.pack()
text_pad.pack(fill=tk.BOTH,expand=True)
#滚动栏
scroll=tk.Scrollbar(text_pad)
text_pad.config(yscrollcommand=scroll.set)#绑定
scroll.config(command=text_pad.yview) #当拖动滚动栏时页面会变化
scroll.pack(side=tk.RIGHT,fil=tk.Y)
root.config(menu=menu)
root.mainloop()
案例3:计算器

import tkinter as tk
root=tk.Tk()
root.title('计算器')
root.geometry('295x280+150+150')
font=('宋体',20)
font_16=('宋体',16)
root.attributes('-alpha',0.9) #设置透明度
# root['background']='#ffffff'
result_num=tk.StringVar()
result_num.set('')
tk.Label(root,
textvariable=result_num,font=font,height=2,
width=20,justify=tk.LEFT,anchor=tk.SE
).grid(row=1,column=1,columnspan=4)
button_clear=tk.Button(root,text='C',width=5,font=font_16,relief=tk.FLAT,bg='#b1b2b2')
button_back=tk.Button(root,text='<-',width=5,font=font_16,relief=tk.FLAT,bg='#b1b2b2')
button_division=tk.Button(root,text='/',width=5,font=font_16,relief=tk.FLAT,bg='#b1b2b2')
button_multiplication=tk.Button(root,text='x',width=5,font=font_16,relief=tk.FLAT,bg='#b1b2b2')
#表格布局
button_clear.grid(row=2,column=1,padx=4,pady=2)
button_back.grid(row=2,column=2,padx=4,pady=2)
button_division.grid(row=2,column=3,padx=4,pady=2)
button_multiplication.grid(row=2,column=4,padx=4,pady=2)
button_seven=tk.Button(root,text='7',width=5,font=font_16,relief=tk.FLAT,bg='#eacda1')
button_eight=tk.Button(root,text='8',width=5,font=font_16,relief=tk.FLAT,bg='#eacda1')
button_nine=tk.Button(root,text='9',width=5,font=font_16,relief=tk.FLAT,bg='#eacda1')
button_subtraction=tk.Button(root,text='-',width=5,font=font_16,relief=tk.FLAT,bg='#b1b2b2')
button_seven.grid(row=3,column=1,padx=4,pady=2)
button_eight.grid(row=3,column=2,padx=4,pady=2)
button_nine.grid(row=3,column=3,padx=4,pady=2)
button_subtraction.grid(row=3,column=4,padx=4,pady=2)
button_four=tk.Button(root,text='4',width=5,font=font_16,relief=tk.FLAT,bg='#eacda1')
button_five=tk.Button(root,text='5',width=5,font=font_16,relief=tk.FLAT,bg='#eacda1')
button_six=tk.Button(root,text='6',width=5,font=font_16,relief=tk.FLAT,bg='#eacda1')
button_add=tk.Button(root,text='+',width=5,font=font_16,relief=tk.FLAT,bg='#b1b2b2')
button_four.grid(row=4,column=1,padx=4,pady=2)
button_five.grid(row=4,column=2,padx=4,pady=2)
button_six.grid(row=4,column=3,padx=4,pady=2)
button_add.grid(row=4,column=4,padx=4,pady=2)
button_one=tk.Button(root,text='1',width=5,font=font_16,relief=tk.FLAT,bg='#eacda1')
button_two=tk.Button(root,text='2',width=5,font=font_16,relief=tk.FLAT,bg='#eacda1')
button_three=tk.Button(root,text='3',width=5,font=font_16,relief=tk.FLAT,bg='#eacda1')
button_equal=tk.Button(root,text='=',width=5,height=3,font=font_16,relief=tk.FLAT,bg='#b1b2b2')
button_one.grid(row=5,column=1,padx=4,pady=2)
button_two.grid(row=5,column=2,padx=4,pady=2)
button_three.grid(row=5,column=3,padx=4,pady=2)
button_equal.grid(row=5,column=4,padx=4,pady=2,rowspan=2)
button_zero=tk.Button(root,text='0',width=12,font=font_16,relief=tk.FLAT,bg='#eacda1')
button_zero1=tk.Button(root,text='0',width=5,font=font_16,relief=tk.FLAT,bg='#eacda1')
button_dot=tk.Button(root,text='.',width=5,font=font_16,relief=tk.FLAT,bg='#eacda1')
button_equal2=tk.Button(root,text='=',width=5,font=font_16,relief=tk.FLAT,bg='#b1b2b2')
button_zero.grid(row=6,column=1,padx=4,pady=2,columnspan=2)
# button_zero1.grid(row=6,column=2,padx=4,pady=2)
button_dot.grid(row=6,column=3,padx=4,pady=2)
# button_equal2.grid(row=6,column=4,padx=4,pady=2)
#点击事件
def click_button(x):
print(x)
result_num.set(result_num.get()+x)
def calculation():
opt_str=result_num.get()
result=eval(opt_str)
result_num.set(result)
print(opt_str)
button_one.config(command=lambda : click_button('1'))
button_two.config(command=lambda : click_button('2'))
button_three.config(command=lambda : click_button('3'))
button_four.config(command=lambda : click_button('4'))
button_five.config(command=lambda : click_button('5'))
button_six.config(command=lambda : click_button('6'))
button_seven.config(command=lambda : click_button('7'))
button_eight.config(command=lambda : click_button('8'))
button_nine.config(command=lambda : click_button('9'))
button_zero.config(command=lambda : click_button('0'))
button_add.config(command=lambda : click_button('+'))
button_division.config(command=lambda : click_button('/'))
button_subtraction.config(command=lambda : click_button('-'))
button_multiplication.config(command=lambda : click_button('x'))
button_equal.config(command=calculation)
root.mainloop()
案例4:图片查看器

#图片查看器
import tkinter as tk
import glob
root=tk.Tk()
root.geometry('900x600+100+100')
root.title('图片查看器')
#golb 通配符查找文件
photos=glob.glob('*.png')
print(photos)
current_photo_no=1
photo=tk.PhotoImage(file=photos[current_photo_no])
photo_label=tk.Label(root,image=photo,width=600,height=500)
photo_label.pack()
number_var=tk.StringVar()
number_var.set('1 of 4')
tk.Label(root,textvariable=number_var,bd=1,relief=tk.SUNKEN,anchor=tk.CENTER).pack(fill=tk.X)
button_frame=tk.Frame(root)
# root['background']='#ffffff'
button_frame.pack()
prev_photo=tk.Button(button_frame,text='上一页')
next_photo=tk.Button(button_frame,text='下一页')
prev_photo.pack(side=tk.LEFT,anchor=tk.CENTER)
next_photo.pack(side=tk.RIGHT,anchor=tk.CENTER)
#需要用PIL
def change_potos(next_on):
global current_photo_no
current_photo_no += next_on
photo_label.configure(image=photo)
print(current_photo_no)
photo_label.pack()
prev_photo.config(command=lambda : change_potos(-1))
next_photo.config(command=lambda : change_potos(1))
root.mainloop()
案例5 网络调试小工具

import tkinter as tk
from tkinter import ttk
root=tk.Tk()
root.title('网络调试工具')
root.geometry('650x500+100+100')
"""
左边布局
"""
left_frame=tk.Frame(root)
left_frame.pack(side=tk.LEFT,anchor=tk.N,padx=5,pady=5)
"""左边布局 网络设置"""
net_frame=tk.LabelFrame(left_frame,text='网络设置',padx=5,pady=5)
net_frame.pack()
tk.Label(net_frame,text='1.协议类型').pack(anchor=tk.W)
socket_type=ttk.Combobox(net_frame)
socket_type['values']=['TCP服务器','TCP 客户端']
socket_type.current(0)
socket_type.pack(anchor=tk.W)
tk.Label(net_frame,text='2.本地主机地址').pack(anchor=tk.W)
socket_host=ttk.Combobox(net_frame)
socket_host['values']=['127.0.0.1','192.168.59.241']
socket_host.current(0)
socket_host.pack(anchor=tk.W)
tk.Label(net_frame,text='3.本地端口').pack(anchor=tk.W)
entry_port=ttk.Entry(net_frame)
entry_port.pack(fill=tk.X)
#按钮
button_frame=tk.Frame(net_frame)
button_frame.pack()
open_button=tk.Button(button_frame,text='打开')
close_button=tk.Button(button_frame,text='关闭')
open_button.pack(side=tk.LEFT)
close_button.pack(side=tk.RIGHT)
"""左边布局 接收设置"""
recv_frame=tk.LabelFrame(left_frame,text='接收设置',padx=5,pady=5)
recv_frame.pack(side=tk.TOP,anchor=tk.N,fill=tk.X)
tk.Radiobutton(recv_frame,text='UTF-8').pack(anchor=tk.W)
tk.Radiobutton(recv_frame,text='GBK').pack(anchor=tk.W)
tk.Checkbutton(recv_frame,text='解析为JSON').pack(anchor=tk.W)
tk.Checkbutton(recv_frame,text='自动换行').pack(anchor=tk.W)
"""左边布局 发送设置"""
recv_frame=tk.LabelFrame(left_frame,text='接收设置',padx=5,pady=5)
recv_frame.pack(side=tk.TOP,anchor=tk.N,fill=tk.X)
tk.Radiobutton(recv_frame,text='UTF-8').pack(anchor=tk.W)
tk.Radiobutton(recv_frame,text='GBK').pack(anchor=tk.W)
tk.Checkbutton(recv_frame,text='数据加密').pack(anchor=tk.W)
tk.Checkbutton(recv_frame,text='信息接受').pack(anchor=tk.W)
"""右边布局"""
right_frame=tk.Frame(root)
right_frame.pack(side=tk.TOP,padx=5,pady=5)
info_frame=tk.Frame(right_frame)
info_frame.pack()
tk.Label(info_frame,text='数据日志').pack(anchor=tk.W)
text_pad=tk.Text(info_frame,width=62)
text_pad.pack(side=tk.LEFT,fill=tk.X)
send_text_bar=tk.Scrollbar(info_frame)
send_text_bar.pack(side=tk.RIGHT,fill=tk.Y)
tk.Label(right_frame,text='信息发送').pack(anchor=tk.W)
send_frame=tk.Frame(right_frame)
send_frame.pack()
send_area=tk.Text(send_frame,width=58,height=6)
send_area.pack(side=tk.LEFT)
send_button=tk.Button(send_frame,text='发送',width=4)
send_button.pack(side=tk.RIGHT,fill=tk.Y)
root.mainloop()
案例7.选择文件,只显示指定格式
# 指定格式文件显示
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.title("选择文件或文件夹,得到路径")
# 初始化Entry控件的textvariable属性值
select_path = tk.StringVar()
from xml.etree.ElementTree import parse
def select_file():
# 单个文件选择
selected_file_path = filedialog.askopenfilename(filetypes=[('XML','.xml'),('TXT','.txt'),('XLS','.xls')]) # 使用askopenfilename函数选择单个文件
select_path.set(selected_file_path)
f = open(selected_file_path)
# 第1个参数为输入源,返回一个ElementTree对象
et = parse(f)
# 通过元素数(ElementTree)得到根节点
root = et.getroot()
print(root)
def select_files():
# 多个文件选择
selected_files_path = filedialog.askopenfilenames() # askopenfilenames函数选择多个文件
select_path.set('\n'.join(selected_files_path)) # 多个文件的路径用换行符隔开
def select_folder():
# 文件夹选择
selected_folder = filedialog.askdirectory() # 使用askdirectory函数选择文件夹
select_path.set(selected_folder)
# 布局控件
tk.Label(root, text="文件路径:").grid(column=0, row=0, rowspan=3)
tk.Entry(root, textvariable = select_path).grid(column=1, row=0, rowspan=3)
tk.Button(root, text="选择单个文件", command=select_file).grid(row=0, column=2)
tk.Button(root, text="选择多个文件", command=select_files).grid(row=1, column=2)
tk.Button(root, text="选择文件夹", command=select_folder).grid(row=2, column=2)
root.mainloop()
xml解析
import tkinter as tk
root=tk.Tk()
root.title('测试')
root.geometry('800x600+100+100')
select_frame=tk.Frame(root)
select_frame.pack()
# tk.Text(select_frame,width=10,height=1).pack(side=tk.LEFT)
# tk.Button(select_frame,text='选择',width=4).pack(side=tk.RIGHT,fill=tk.X)
send_area=tk.Text(select_frame,width=58,height=6)
send_area.pack(side=tk.LEFT)
send_button=tk.Button(select_frame,text='发送',width=4)
send_button.pack(side=tk.RIGHT,fill=tk.Y)
root.mainloop()
测试UI代码
```python
import tkinter as tk
from xml.etree.ElementTree import parse
from tkinter import filedialog
from tkinter import ttk
root=tk.Tk()
root.title('XML')
root.geometry('500x300+100+100')
# 初始化Entry控件的textvariable属性值
select_path = tk.StringVar()
text_data=tk.StringVar()
def select_file():
# 单个文件选择
selected_file_path = filedialog.askopenfilename(
filetypes=[('XML', '.xml')]) # 使用askopenfilename函数选择单个文件
select_path.set(selected_file_path)
if selected_file_path=='':
pass
else:
f = open(selected_file_path)
# 第1个参数为输入源,返回一个ElementTree对象
et = parse(f)
# 通过元素数(ElementTree)得到根节点
root = et.getroot()
print(root)
list = root.findall('.//command[@validTo]')
validTo=list[0].attrib['validTo']
text_pad.delete(0.0, tk.END)
text_pad.insert(1.0, validTo)
#xml
def xml_tool(xml_list):
for path in xml_list:
print(path)
filename=path.split('/')[-1]
print(filename)
f = open(path)
et = parse(f)
root = et.getroot()
list = root.findall('.//command[@validTo]')
print(list[0].attrib['validTo'])
def select_files():
# 多个文件选择
selected_files_path = filedialog.askopenfilenames(filetypes=[('XML', '.xml')]) # askopenfilenames函数选择多个文件
select_path.set('\n'.join(selected_files_path)) # 多个文件的路径用换行符隔开
print(selected_files_path)
print(list(selected_files_path))
text_pad.delete(0.0,tk.END)
text_pad.insert(1.0,selected_files_path)
xml_tool(list(selected_files_path))
#text insert data
def text_insert(data):
pass
def select_folder():
# 文件夹选择
selected_folder = filedialog.askdirectory() # 使用askdirectory函数选择文件夹
select_path.set(selected_folder)
# 布局控件
label_frame=tk.Frame(root)
label_frame.pack(side=tk.TOP,anchor=tk.N,padx=5,pady=5,fill=tk.X)
tk.Label(label_frame, text="文件路径:").pack(side=tk.LEFT)
tk.Entry(label_frame, textvariable=select_path).pack(side=tk.LEFT,fill=tk.X)
ttk.Button(label_frame, text="选择单个文件", command=select_file).pack()
# tk.Text(label_frame).pack(side=tk.BOTTOM)
#button
button_frame=tk.Frame(root,bg='#faebd7')
button_frame.pack(side=tk.BOTTOM,anchor=tk.W,padx=5,pady=5,fill=tk.X)
button_ok=ttk.Button(button_frame,text='确认').pack(side=tk.RIGHT)
button_cencle=ttk.Button(button_frame,text='取消').pack(side=tk.RIGHT)
#text
text_pad=tk.Text(root,font=18)
text_pad.pack()
text_pad.pack(fill=tk.BOTH,expand=True)
root.mainloop()

面向对象写法
import tkinter as tk
from xml.etree.ElementTree import parse
from tkinter import filedialog
from tkinter import ttk
class xml_ui:
def __init__(self):
self.root=tk.Tk()
self.root.title('XML')
self.root.geometry('500x300+100+100')
#初始化可变参数变量 textvariable
self.select_path=tk.StringVar()
self.text_data=tk.StringVar()
#主界面的三个frame
self.label_frame()
self.button_frame()
self.center_frame()
self.root.mainloop()
def label_frame(self):
#页面布局
label_frame=tk.Frame(self.root)
label_frame.pack(side=tk.TOP,anchor=tk.N,padx=5,pady=5,fill=tk.X)
tk.Label(label_frame, text="文件路径:").pack(side=tk.LEFT)
tk.Entry(label_frame, textvariable=self.select_path).pack(side=tk.LEFT, fill=tk.X)
ttk.Button(label_frame, text="选择单个文件").pack()
def button_frame(self):
#按键布局
button_frame=tk.Frame(self.root,bg='#faebd7')
button_frame.pack(side=tk.BOTTOM,anchor=tk.W,padx=5,pady=5,fill=tk.X)
button_ok=ttk.Button(button_frame,text='确认').pack(side=tk.RIGHT)
button_cencle=ttk.Button(button_frame,text='取消').pack(side=tk.RIGHT)
def center_frame(self):
center_frame=tk.Frame(self.root)
center_frame.pack()
center_frame.pack(fill=tk.BOTH,expand=True)
self.center_frame_Left(center_frame)
self.center_frame_Right(center_frame)
def center_frame_Left(self,frame):
left_frame_text=tk.Frame(frame,bg='#faebd7')
left_frame_text.place(relx=0.05,rely=0.1,relheight=0.8,relwidth=0.4)
text_pad = tk.Text(left_frame_text, font=18, bg="#faebd7",fg='black')
text_pad.pack()
text_pad.pack(fill=tk.BOTH, expand=True)
def center_frame_Right(self,frame):
right_frame_text=tk.Frame(frame,bg='#334353')
right_frame_text.place(relx=0.55,rely=0.1,relheight=0.8,relwidth=0.4)
text_pad = tk.Text(right_frame_text, font=18, bg="#334355",fg='red')
text_pad.pack()
text_pad.pack(fill=tk.BOTH, expand=True)
xml_ui=xml_ui()
封装2–按键切换页面
import tkinter as tk
from xml.etree.ElementTree import parse
from tkinter import filedialog
from tkinter import ttk
class xml_ui:
def __init__(self):
self.root=tk.Tk()
self.root.title('XML')
self.root.geometry('500x300+100+100')
#初始化可变参数变量 textvariable
self.select_path=tk.StringVar()
self.text_data=tk.StringVar()
#menu
self.file_Menue(self.root)
# #page1
# self.page_1(self.root)
self.root.mainloop()
def file_Menue(self,root):
menu_bar=tk.Menu(root,tearoff=False)
#查找或修改xml属性内容
file_menu=tk.Menu(menu_bar,tearoff=False,activebackground='blue',activeforeground='red',
activeborderwidth=10,
bg='green',
)
font=('Courier',20,'bold')
file_menu.add_command(label='查找',font=font,command=self.munu_method)
file_menu.add_command(label='修改',command=self.munu_method1)
menu_bar.add_cascade(label='文件',menu=file_menu)
#根据条件生成新的xml文件
edit_menu = tk.Menu(menu_bar, tearoff=False)
edit_menu.add_command(label='生成')
menu_bar.add_cascade(label='生成', menu=edit_menu)
root.config(menu=menu_bar)
def munu_method(self):
# page1
self.page_1(self.root)
print('dddd')
def munu_method1(self):
# page1
self.page_1(self.root)
print('dfrfr')
def page_1(self,root):
# 主界面的三个frame
self.label_frame(self.root)
self.button_frame(self.root)
self.center_frame(self.root)
def label_frame(self,frame):
#页面布局
label_frame=tk.Frame(frame)
label_frame.pack(side=tk.TOP,anchor=tk.N,padx=5,pady=5,fill=tk.X)
tk.Label(label_frame, text="文件路径:").pack(side=tk.LEFT)
tk.Entry(label_frame, textvariable=self.select_path).pack(side=tk.LEFT, fill=tk.X)
ttk.Button(label_frame, text="选择单个文件").pack()
def button_frame(self,frame):
#按键布局
button_frame=tk.Frame(frame,bg='#faebd7')
button_frame.pack(side=tk.BOTTOM,anchor=tk.W,padx=5,pady=5,fill=tk.X)
button_ok=ttk.Button(button_frame,text='确认').pack(side=tk.RIGHT)
button_cencle=ttk.Button(button_frame,text='取消').pack(side=tk.RIGHT)
def center_frame(self,frame):
center_frame=tk.Frame(frame)
center_frame.pack()
center_frame.pack(fill=tk.BOTH,expand=True)
self.center_frame_Left(center_frame)
self.center_frame_Right(center_frame)
def center_frame_Left(self,frame):
left_frame_text=tk.Frame(frame,bg='#faebd7')
left_frame_text.place(relx=0.05,rely=0.1,relheight=0.8,relwidth=0.4)
text_pad = tk.Text(left_frame_text, font=18, bg="#faebd7",fg='black')
text_pad.pack()
text_pad.pack(fill=tk.BOTH, expand=True)
def center_frame_Right(self,frame):
right_frame_text=tk.Frame(frame,bg='#334353')
right_frame_text.place(relx=0.55,rely=0.1,relheight=0.8,relwidth=0.4)
text_pad = tk.Text(right_frame_text, font=18, bg="#334355",fg='red')
text_pad.pack()
text_pad.pack(fill=tk.BOTH, expand=True)
xml_ui=xml_ui()
https://zhidao.baidu.com/question/1761174296742452868.html
修正切换页面
import tkinter as tk
from xml.etree.ElementTree import parse
from tkinter import filedialog
from tkinter import ttk
class xml_ui:
def __init__(self):
self.root=tk.Tk()
self.root.title('XML')
self.root.geometry('500x300+100+100')
#初始化可变参数变量 textvariable
self.select_path=tk.StringVar()
self.text_data=tk.StringVar()
#menu
self.file_Menue(self.root)
# #page1
# self.page_1(self.root)
self.frame1=tk.Frame(self.root)
self.page_1(self.frame1)
self.frame2 = tk.Frame(self.root)
self.page_2(self.frame2)
self.currentpage=self.frame1
self.currentpage.pack(fill=tk.BOTH,expand=True)
self.root.mainloop()
def file_Menue(self,root):
menu_bar=tk.Menu(root,tearoff=False)
#查找或修改xml属性内容
file_menu=tk.Menu(menu_bar,tearoff=False,activebackground='blue',activeforeground='red',
activeborderwidth=10,
bg='green',
)
font=('Courier',20,'bold')
file_menu.add_command(label='查找',font=font,command=self.munu_method)
file_menu.add_command(label='修改',command=self.munu_method1)
menu_bar.add_cascade(label='文件',menu=file_menu)
#根据条件生成新的xml文件
edit_menu = tk.Menu(menu_bar, tearoff=False)
edit_menu.add_command(label='生成')
menu_bar.add_cascade(label='生成', menu=edit_menu)
root.config(menu=menu_bar)
def munu_method(self):
# page1
if self.currentpage != self.frame1:
self.currentpage.pack_forget() # 取消显示当前界面,并不是销毁
self.currentpage = self.frame1
self.currentpage.pack(fill=tk.BOTH,expand=True) # 显示界面1
print('dddd')
def munu_method1(self):
# page1
if self.currentpage != self.frame2:
self.currentpage.pack_forget() # 取消显示当前界面,并不是销毁
self.currentpage = self.frame2
self.currentpage.pack(fill=tk.BOTH,expand=True) # 显示界面2
print('dfrfr')
def page_1(self,root):
# 主界面的三个frame
self.label_frame(root)
self.button_frame(root)
self.center_frame(root)
def page_2(self,root):
# 主界面的三个frame
self.label_frame(root)
self.button_frame(root)
self.center_frame(root)
def label_frame(self,frame):
#页面布局
label_frame=tk.Frame(frame)
label_frame.pack(side=tk.TOP,anchor=tk.N,padx=5,pady=5,fill=tk.X)
tk.Label(label_frame, text="文件路径:").pack(side=tk.LEFT)
tk.Entry(label_frame, textvariable=self.select_path).pack(side=tk.LEFT, fill=tk.X)
ttk.Button(label_frame, text="选择单个文件").pack()
def button_frame(self,frame):
#按键布局
button_frame=tk.Frame(frame,bg='#faebd7')
button_frame.pack(side=tk.BOTTOM,anchor=tk.W,padx=5,pady=5,fill=tk.X)
button_ok=ttk.Button(button_frame,text='确认').pack(side=tk.RIGHT)
button_cencle=ttk.Button(button_frame,text='取消').pack(side=tk.RIGHT)
def center_frame(self,frame):
center_frame=tk.Frame(frame)
center_frame.pack()
center_frame.pack(fill=tk.BOTH,expand=True)
self.center_frame_Left(center_frame)
self.center_frame_Right(center_frame)
def center_frame_Left(self,frame):
left_frame_text=tk.Frame(frame,bg='#faebd7')
left_frame_text.place(relx=0.05,rely=0.1,relheight=0.8,relwidth=0.4)
text_pad = tk.Text(left_frame_text, font=18, bg="#faebd7",fg='black')
text_pad.pack()
text_pad.pack(fill=tk.BOTH, expand=True)
def center_frame_Right(self,frame):
right_frame_text=tk.Frame(frame,bg='#334353')
right_frame_text.place(relx=0.55,rely=0.1,relheight=0.8,relwidth=0.4)
text_pad = tk.Text(right_frame_text, font=18, bg="#334355",fg='red')
text_pad.pack()
text_pad.pack(fill=tk.BOTH, expand=True)
xml_ui=xml_ui()