#coding:utf-8 #是用来指定文件编码为utf-8的
import os
import codecs#涉及到文件目录有中文日文英文,其ASCII格式不一样
from tkinter import *
from tkinter import messagebox #导入tkMessageBox
from tkinter.filedialog import askdirectory #返回文件夹路径,不是文件路径使用
import tkinter.filedialog
import tkinter.messagebox
import tkinter as tk
from tkinter import ttk
import re
import time #定时使用
#以下是将docx文件转为doc文件实用。需要调用office中的API
import win32com
from win32com.client import Dispatch
import shutil
from PIL import Image,ImageTk
#调试用
import traceback
import shutil #实现文件的复制
class Application(Frame):
filename2 = ''
filename3 = ''
WordApp =''
ButtonLSX = ['']
CAN_ID = ''
byteL = 0
byteH = 0
combox = ('762',)
def __init__(self,master = None):
Frame.__init__(self,master)
self.grid(row = 0,column = 5)
self.path2 = StringVar()#先在此处定义,在函数selectDocx()被调用时赋值
self.path3 = StringVar()#先在此处定义,在函数selectDocx()被调用时赋值
self.path4 = StringVar()#先在此处定义,在函数selectDocx()被调用时赋值
self.txt1 =StringVar()
self.txt2 =StringVar()
self.txt3 =StringVar()
self.txt4 =StringVar()
self.txt5 =StringVar()
self.txt6 =StringVar()
self.txt7 =StringVar()
self.txt8 =StringVar()
self.abs = StringVar()
self.sas = StringVar()
self.CanID = StringVar() #can id 下拉菜单
self.createWidgets()
def createWidgets(self):
global ButtonLS
#cfg路径选择标签
self.DocxPathLabel = Label(self,text = "选择CAN CFG 文件", bg = '#f0fff0',height = 1,width = 18)
self.DocxPathLabel.grid(row = 0, column = 0,pady = 5,sticky=N+S+N+S) #sticky=N+S上下对齐
#entry内容设置
self.DocxPathEntry = Entry(self, textvariable = self.path2,bg = '#f0fff0',selectbackground = 'red') #entry 的text属性不可以设置文本格式,在Entry中设定初始值,使用textvariable将变量与Entry绑定
self.DocxPathEntry.grid(row = 0, column = 1,columnspan =8,pady = 5,sticky=N+S+W+E)#padx=2,与前一个控件水平距离
self.DocxPathEntry.insert(0,'点击<cfg选择>按键,显示所选cfg文件路径……')
#cfg选择按钮设置
self.ProButton = Button(self, text = "cfg文件选择", bg = '#fff8dc',height = 1,width = 13,command = self.selectDocx)
self.ProButton.grid(row = 0, column = 9,pady = 5,sticky=N+S+W+E)
#设置Can Id
#self.Get_CanId_Label = Label(self,text = "Can Id", bg = '#f0fff0',height = 1,width = 6)
#self.Get_CanId_Label.grid(row = 1, column = 0,pady = 5,sticky=E) #sticky=N+S上下对齐
##self.Get_CanId_Entry = Entry(self, textvariable = self.path3,width = 10,fg ='red',bg = '#f0fff0',selectbackground = 'red')
##self.Get_CanId_Entry.grid(row = 1, column = 1,columnspan =8,pady = 5,sticky=W+N+S)#padx=2,与前一个控件水平距离
#self.Get_CanId_Entry.insert(0,'输入Can Id')
##self.Get_CanID_Button = Button(self, text = "设置CanID", fg='red',bg = '#fff8dc',height = 1,command = self.getCanId)
##self.Get_CanID_Button.grid(row = 1, column = 3,columnspan =2,pady = 5,sticky=N+S+W+E)
"""
options = ['8','9','7','6','3']
self.CanID.set(options[0])
self.CanIDchose = OptionMenu(self, self.CanID,*options)
#self.CanIDchose['values'] = (12,6,3,4,5)
self.CanIDchose.grid(row = 15, column = 3,columnspan =2,pady = 5,sticky=N+S+W+E)
#self.CanIDchose.current(2)
"""
#self.Get_CanId_Label = Label(self,text = "选择Can Id", bg = 'orange',fg = 'red',height = 1,width = 6)
#self.Get_CanId_Label.grid(row = 1, column = 9,pady = 5,sticky=N+S+W+E) #sticky=N+S上下对齐
self.CanIDchose = ttk.Combobox(self, textvariable = self.CanID,width = 5)
f = open(r'.\cfg\CAN协议总结.cfg')
for line in f:
if line[5:10] =="CANID":
self.combox = self.combox + (line[11:14],)
f.close()
self.combox = tuple(set(self.combox)) #去重
self.CanIDchose['values'] = sorted(self.combox) #sorted 只能排序字符串
self.CanIDchose.grid(row = 1, column = 9,columnspan =1,pady = 5,sticky=N+S+E)
self.CanIDchose.current(3)
self.Get_CanID_Button = Button(self, text = "设置CanID", fg='red',bg = 'pink',height = 1,width = 8,command = self.getCanId)
self.Get_CanID_Button.grid(row = 1, column = 10,columnspan =1,pady = 5,sticky=N+S)
self.Write_File = Button(self, text = "写入txt", fg='blue',bg = 'pink',height = 1,width = 9,command = self.WriteFile)
self.Write_File.grid(row = 1, column = 11,columnspan =1,pady = 5,sticky=N+S+W)
"""
#画图框架图1
self.canvas1 = Canvas(self, width = 900, height = 600, bg = "#f0fff0")
load1 = Image.open(r".\cfg\sys")
render1 = ImageTk.PhotoImage(load1)
img1 = load1.resize((int(load1.size[0]/3*2),int(load1.size[1]/3*2)),Image.ANTIALIAS)
render1 = ImageTk.PhotoImage(img1)
self.canvas1.image =render1 #这里会让图片显示出来
self.canvas1.create_image(412,200,image = render1) #中心位置
self.canvas1.grid(row = 13, column = 1,columnspan=8,sticky=W+E)
myText=self.canvas1.create_text(280,95,text='0')
myText=self.canvas1.create_text(370,95,text='0')
"""
#64bit button set fg='blue',bg = '#ff0000'
self.Button0 = Button(self, text = "0",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(0))
self.Button0.grid(row = 4, column = 8,pady = 5,padx =5,sticky=N+S)
self.Button1 = Button(self, text = "1",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(1))
self.Button1.grid(row = 4, column = 7,pady = 5,padx =5,sticky=N+S)
self.Button2 = Button(self, text = "2",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(2))
self.Button2.grid(row = 4, column = 6,pady = 5,padx =5,sticky=N+S)
self.Button3 = Button(self, text = "3",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(3))
self.Button3.grid(row = 4, column = 5,pady = 5,padx =5,sticky=N+S)
self.Button4 = Button(self, text = "4",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(4))
self.Button4.grid(row = 4, column = 4,pady = 5,padx =5,sticky=N+S)
self.Button5 = Button(self, text = "5",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(5))
self.Button5.grid(row = 4, column = 3,pady = 5,padx =5,sticky=N+S)
self.Button6 = Button(self, text = "6",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(6))
self.Button6.grid(row = 4, column = 2,pady = 5,padx =5,sticky=N+S)
self.Button7 = Button(self, text = "7",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(7))
self.Button7.grid(row = 4, column = 1,pady = 5,padx =5,sticky=N+S)
self.Button8 = Button(self, text = "8",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(8))
self.Button8.grid(row = 5, column = 8,pady = 5,padx =5,sticky=N+S)
self.Button9 = Button(self, text = "9",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(9))
self.Button9.grid(row = 5, column = 7,pady = 5,padx =5,sticky=N+S)
self.Button10 = Button(self, text = "10",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(10))
self.Button10.grid(row = 5, column = 6,pady = 5,padx =5,sticky=N+S)
self.Button11 = Button(self, text = "11",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(11))
self.Button11.grid(row = 5, column = 5,pady = 5,padx =5,sticky=N+S)
self.Button12 = Button(self, text = "12",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(12))
self.Button12.grid(row = 5, column = 4,pady = 5,padx =5,sticky=N+S)
self.Button13 = Button(self, text = "13",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(13))
self.Button13.grid(row = 5, column = 3,pady = 5,padx =5,sticky=N+S)
self.Button14 = Button(self, text = "14",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(14))
self.Button14.grid(row = 5, column = 2,pady = 5,padx =5,sticky=N+S)
self.Button15 = Button(self, text = "15",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(15))
self.Button15.grid(row = 5, column = 1,pady = 5,padx =5,sticky=N+S)
self.Button16 = Button(self, text = "16",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(16))
self.Button16.grid(row = 6, column = 8,pady = 5,padx =5,sticky=N+S)
self.Button17 = Button(self, text = "17",height = 1,width = 3,relief=FLAT,fg='blue',bg = 'green',cursor = "heart",command = lambda :self.bit_info(17))
self.Button17.grid(row = 6, column = 7,pady = 5,padx =5,sticky=N+S)