1
我有一個GUI,用戶可以在其中加載日誌文件,並可以查看框架中的日誌文件,並突出顯示文件中的警告和錯誤。基於來自tkinter中文件的輸入創建圖形
我也試圖通過創建一個包含用戶選擇的日誌文件中的ID和時間戳的圖來可視化該文件的數據。我已經能夠分別使用matplotlib創建圖形,並使用plt.show()
顯示圖形。
但是我無法將它嵌入到我的tkinter GUI中。我嘗試了很多東西,但只能得到座標軸而不是實際的棒圖。當用戶選擇要加載的文件時,會出現日誌文件等,但在畫布區域中,只有軸顯示並且沒有繪圖。
這裏是我的代碼部分:
import matplotlib
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import \
FigureCanvasTkAgg,NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
from tkinter import *
from tkinter import ttk
from tkinter.filedialog import askopenfilename
link,warn_list,frame_id, timeStamp=[[] for _ in range(4)]
root= Tk()
Title=root.title("Tool")
label=ttk.Label(root, text="Welcome",foreground='purple',font=("Times 20 bold italic"))
label.pack()
frame1=ttk.LabelFrame(root,labelanchor=NW,height=500,width=500,text='Static Information')
frame1.pack(fill=BOTH,expand=True)
text_static=Text(frame1,width=45, height=15,bg='lightgray')
text_static.pack(side=LEFT,fill=BOTH)
def loadfile():
filename=askopenfilename(parent=root,filetypes=(("Text File","*.txt"), ("All Files","*.*")),title='Choose a file')
with open(filename, 'r')as log:
for num,line in enumerate(log,1):
if line.find("cam_req_mgr_process_sof")!=-1:
line=line.split()
frame_id.append(line [-1])
timeStamp.append(line[3].replace(":", ""))
menu=Menu(root)
root.config(menu=menu)
file=Menu(menu)
file.add_command(label='Load', command=loadfile)
file.add_command(label='Exit',command=root.destroy)
menu.add_cascade(label='Select an option:', menu=file)
def graph():
fig=plt.Figure()
x=frame_id #can use x=range(1,38)
y=[1]*len(x)
ax=fig.add_subplot(111)
ax.bar(x,y,width=0.5, color='lightgreen')
return fig
plot=graph()
canvas=FigureCanvasTkAgg(plot,frame1)
canvas.get_tk_widget().pack()
toolbar=NavigationToolbar2TkAgg(canvas,frame1)
toolbar.update()
canvas._tkcanvas.pack()
root.mainloop()