Archived
Modify:
Restruct ui code
This commit is contained in:
1 parent
b28dd3e28d
commit
d4db845cb3
7 files changed
+2000
No files matched your search
+477
@@ -0,0 +1,477 @@
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#-----------------------------------------------------------------#
|
||||
|
||||
### Self
|
||||
import Ui_view as vie
|
||||
import Ui_about as abo
|
||||
import Ui_options as opt
|
||||
import Ui_processor as pro
|
||||
import Config_file as config
|
||||
import Func_callback as func
|
||||
|
||||
### Std
|
||||
from tkinter import ttk
|
||||
from PIL import ImageTk
|
||||
from base64 import b64decode
|
||||
from matplotlib.backends.backend_tkagg import (
|
||||
FigureCanvasTkAgg, NavigationToolbar2Tk)
|
||||
|
||||
import tkinter as tk
|
||||
import tkinter.font as tkfont
|
||||
import matplotlib as mpl
|
||||
mpl.use('TkAgg')
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
def instanceOPT(hwndparent, cfg_get_, func_):
|
||||
opt.OPTGUI(hwndparent, cfg_get_, func_)
|
||||
|
||||
def instancePRO(hwndparent, cfg_get_, func_):
|
||||
pro.EXECUDUI(hwndparent, cfg_get_, func_)
|
||||
|
||||
def instanceVIE(hwndparent, func_):
|
||||
vie.VIEWGUI(hwndparent, func_)
|
||||
|
||||
def instanceABO(hwndparemt, cfg_get_):
|
||||
abo.ABODUI(hwndparemt, cfg_get_)
|
||||
|
||||
class MAINGUI:
|
||||
def __init__(self, hwnd_, func_):
|
||||
# init
|
||||
# -------------------------------------------------------------------------------
|
||||
self.func = func_
|
||||
self.hwnd = hwnd_
|
||||
|
||||
self.ux = None
|
||||
self.nx = None
|
||||
self.ex = None
|
||||
|
||||
self.satn = None
|
||||
self.satvisb = None
|
||||
self.sattrack = None
|
||||
|
||||
self.canvas1 = None
|
||||
self.canvas0 = None
|
||||
self.canvas2 = None
|
||||
|
||||
self.Drawcards = None
|
||||
self.Figurefrm_Sky = None
|
||||
self.Figurefrm_Vis = None
|
||||
self.Figurefrm_ENU = None
|
||||
|
||||
self.lastx = None
|
||||
self.lasty = None
|
||||
self.press = None
|
||||
|
||||
self.plotstate = None
|
||||
|
||||
self.initGUI()
|
||||
|
||||
def initGUI(self):
|
||||
# -------------------------------------------------------------------------------
|
||||
# >
|
||||
# Method:
|
||||
# Brief :
|
||||
# Author: @KenanZhu All Right Reserved.
|
||||
# -------------------------------------------------------------------------------
|
||||
### Set size
|
||||
self.hwnd.title(
|
||||
"KNZ_GeoTrackLab %s"
|
||||
%cfg_get['INFO']['Version']
|
||||
)
|
||||
self.func.Move_center(hwnd,1200,700)
|
||||
self.hwnd.minsize(1200, 700)
|
||||
### Set icon
|
||||
icon_ico = (b'AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMS4xMTGQMDAwKgAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTE0MjIy7jMzM/8zMzPrMDAwLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvLy8QMTExSAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAMTExNDIyMu4zMzP/MzMz/zMzM/8zMzPrMDAwLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALy8vEDIyMsoyMjLKAAAAAAAAAAAAAAAAAAAAADExMTQyMjLuMzMz/zIy'
|
||||
b'MvsxMTGaMjIy/TMzM/8zMzPrMTExLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAyMjJRMjIy3TExMbgyMjLKMzMz/zIyMtkAAAAAMDAwOioqKgYAAAAAMTExszMzM/8yMjL7MDAwWQAAAAAxMTFhMjIy/TMz'
|
||||
b'M/8zMzPrMTExLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMt0zMzP/MzMz/zMz'
|
||||
b'M/8zMzP/MTExrjExMU0yMjL4MTExsyoqKgYqKioMMjIyvzAwMFkAAAAAAAAAAAAAAAAxMTFhMjIy/TMzM/8zMzPrMTExLgAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExuDMzM/8zMzP/MzMz/zMzM/8xMTGaMjIy+DMz'
|
||||
b'M/8zMzP/MTExsyoqKgYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTFhMjIy/jMzM/8yMjLfAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8vLxAyMjLKMzMz/zMzM/8zMzP/MzMz9TIyMvkzMzP/MzMz/zMzM/8zMzP/MTExsyoq'
|
||||
b'KgYAAAAAAAAAAAAAAAAAAAAAAAAAADExMY8zMzP/MzMz/zMzM8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAvLy8QMjIyyjMzM/8zMzP/MzMz/zMzM/UyMjL+MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MTExsyoqKgYAAAAAAAAAAAAA'
|
||||
b'AAAxMTGPMzMz/zMzM/8yMjLTMDAwFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMUgyMjLKMjIy2DEx'
|
||||
b'Ma4xMTGaMjIy+TMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MTExsyoqKgYAAAAAMTExbDMzM/8zMzP/MjIy0zAw'
|
||||
b'MBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExTTIyMvgzMzP/MzMz/zMz'
|
||||
b'M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MTExsyoqKgYqKioMMzMzwzIyMtMwMDAVAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDoyMjL4MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz'
|
||||
b'M/8zMzP/MzMz/zMzM/8zMzP/MTExsyoqKgYqKioMMDAwFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAKioqBjIyMrIzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMz'
|
||||
b'M/8zMzP/MTExsyoqKgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAKioqBjIyMrIzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MjIyfgAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExNDExMbMqKioMKioqBjIy'
|
||||
b'MrIzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8xMTGUAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDUyMjLvMzMz/zIyMsAAAAABKioqBjIyMrIzMzP/MzMz/zMz'
|
||||
b'M/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MjIy3i0tLRwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAwMDA1MjIy7zMzM/8yMjL7MDAwWQAAAAAAAAAAKioqBjIyMrIzMzP/MzMz/zMzM/8zMzP/MzMz/zMz'
|
||||
b'M/8zMzP/MzMz/zIyMt4zMzMeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwLzIy'
|
||||
b'Mu8zMzP/MjIy+zAwMFkAAAAAAAAAAAAAAAAAAAAAKioqBjIyMrIzMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8yMjLeMzMzHgAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTGQMzMz/zMzM/8zMzObAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAKioqBjIyMrIzMzP/MzMz/zMzM/8zMzP/MjIy3jMzMx4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMSkzMzPrMzMz/zIyMv0xMTFiAAAAAAAAAAAAAAAAAAAAADEx'
|
||||
b'MWwqKioMKioqBjIyMrIzMzP/MzMz/zIyMt4zMzMeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMS4zMzPrMzMz/zIyMv0xMTFiAAAAAAAAAAAxMTGQMzMz/zMzM8MqKioMKioqBjIy'
|
||||
b'Mn4xMTGULy8vGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAADExMS4zMzPrMzMz/zIyMv0xMTFiMTExkDMzM/8zMzP/MjIy0zAwMBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEx'
|
||||
b'MS4zMzPrMzMz/zIyMv4zMzP/MzMz/zIyMtMwMDAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMS4zMzPrMzMz/zMz'
|
||||
b'M/8yMjLTMDAwFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMS4yMjLfMTExxzAwMBUAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////'
|
||||
b'/////////////////x////4P//58B//8eAP/4EhB/+AA4P/gAfD/wAHw/4AA4P+AAEH/8AAD/+AAB//gAA//8AAP/8AAD/+A'
|
||||
b'AA//BgAf/g8AP/4fgH/+DwD//wYB//+AH///wD///+B////w//8=')
|
||||
icon_ico = b64decode(icon_ico)
|
||||
icon_ico = ImageTk.PhotoImage(data=icon_ico)
|
||||
self.hwnd.tk.call('wm', 'iconphoto', self.hwnd._w, icon_ico)
|
||||
### Set front
|
||||
default_font = tkfont.nametofont("TkDefaultFont")
|
||||
default_font.configure(family="Segoe UI", size=9)
|
||||
### Top tool
|
||||
self.initTOPMENU()
|
||||
### Plot area
|
||||
self.initPLOT()
|
||||
### State bar
|
||||
self.initSTATE_BAR()
|
||||
### Quit event & mainloop start
|
||||
self.hwnd.protocol("WM_DELETE_WINDOW", self.hwnd.quit)
|
||||
self.hwnd.mainloop()
|
||||
|
||||
def initTOPMENU(self):
|
||||
# -------------------------------------------------------------------------------
|
||||
# Class :
|
||||
# >
|
||||
# Method:
|
||||
# Brief :
|
||||
# Author: @KenanZhu All Right Reserved.
|
||||
# -------------------------------------------------------------------------------
|
||||
topmenu = tk.Menu(self.hwnd)
|
||||
### File
|
||||
filemenu = tk.Menu(topmenu, tearoff=False)
|
||||
### File > Open...
|
||||
openmenu = tk.Menu(filemenu, tearoff=False)
|
||||
### File > Open... > Open Pos Solution
|
||||
openmenu.add_command(
|
||||
label="Open Pos Solution",
|
||||
accelerator='Ctrl+S'
|
||||
)
|
||||
### File > Open... > Open Sat Solution
|
||||
openmenu.add_command(
|
||||
label="Open Sat Solution",
|
||||
accelerator='Ctrl+S'
|
||||
)
|
||||
### File > Open... > Open RINEX
|
||||
openmenu.add_command(
|
||||
label="Open RINEX",
|
||||
command=lambda :instancePRO(hwnd, cfg_get, self.func),
|
||||
accelerator='Ctrl+P'
|
||||
)
|
||||
filemenu.add_cascade(label="Open...", menu=openmenu)
|
||||
### File > Clesr
|
||||
filemenu.add_command(
|
||||
label="Clear",
|
||||
command=self.Clear_canvas
|
||||
)
|
||||
### File > View
|
||||
filemenu.add_command(
|
||||
label="View",
|
||||
command=lambda :instanceVIE(self.hwnd, self.func)
|
||||
)
|
||||
### File > Exit
|
||||
filemenu.add_command(
|
||||
label="Exit",
|
||||
command=self.hwnd.quit,
|
||||
accelerator='Ctrl+E'
|
||||
)
|
||||
topmenu.add_cascade(label="File", menu=filemenu)
|
||||
|
||||
### Options
|
||||
optmenu = tk.Menu(topmenu, tearoff=False)
|
||||
### Options > Options...
|
||||
optmenu.add_command(
|
||||
label="Options...",
|
||||
command=lambda :instanceOPT(self.hwnd,cfg_get,self.func)
|
||||
)
|
||||
topmenu.add_cascade(
|
||||
label="Options",
|
||||
menu=optmenu
|
||||
)
|
||||
|
||||
### Help
|
||||
helpmenu = tk.Menu(topmenu, tearoff=False)
|
||||
### Help > About
|
||||
helpmenu.add_command(
|
||||
label="About",
|
||||
command=lambda :instanceABO(self.hwnd, cfg_get)
|
||||
)
|
||||
topmenu.add_cascade(label="Help", menu=helpmenu)
|
||||
|
||||
self.hwnd.config(menu=topmenu)
|
||||
|
||||
def initPLOT(self):
|
||||
# -------------------------------------------------------------------------------
|
||||
# >
|
||||
# Method: initPLOT
|
||||
# Brief : Initializes the drawing area of the main ui
|
||||
# Author: @KenanZhu All Right Reserved.
|
||||
# -------------------------------------------------------------------------------
|
||||
self.Drawcards = ttk.Notebook(self.hwnd)
|
||||
# E-N-U Plot area
|
||||
# -------------------------------------------------------------------------------
|
||||
self.PLOT_ENU()
|
||||
self.Drawcards.add(self.Figurefrm_ENU, text='ENU-Draw')
|
||||
# Valid Satellite Amout area
|
||||
# -------------------------------------------------------------------------------
|
||||
self.PLOT_VIS()
|
||||
self.Drawcards.add(self.Figurefrm_Vis, text='Sat Number')
|
||||
# Sky Track Plot area
|
||||
# -------------------------------------------------------------------------------
|
||||
self.PLOT_SKY()
|
||||
self.Drawcards.add(self.Figurefrm_Sky, text='Sat Track')
|
||||
self.Drawcards.pack(fill=tk.BOTH, expand=True, padx='2px', pady='0px')
|
||||
|
||||
def PLOT_ENU(self):
|
||||
# -------------------------------------------------------------------------------
|
||||
# >
|
||||
# >
|
||||
# Method:
|
||||
# Brief :
|
||||
# Author: @KenanZhu All Right Reserved.
|
||||
# -------------------------------------------------------------------------------
|
||||
self.Figurefrm_ENU = tk.Frame(self.hwnd)
|
||||
self.Figurefrm_ENU.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
|
||||
|
||||
plt.rc('font', family='Segoe UI')
|
||||
plt.rcParams['xtick.direction'] = 'in'
|
||||
plt.rcParams['ytick.direction'] = 'in'
|
||||
fig, (self.ex, self.nx, self.ux) = plt.subplots(
|
||||
3,
|
||||
1,
|
||||
figsize=(10, 0),
|
||||
sharex=True
|
||||
)
|
||||
for spine in ['right', 'left']:
|
||||
self.ex.spines[spine].set_visible(False)
|
||||
self.ex.set_facecolor('#f5f5f5')
|
||||
for spine in ['right', 'left']:
|
||||
self.nx.spines[spine].set_visible(False)
|
||||
self.nx.set_facecolor('#f5f5f5')
|
||||
|
||||
for spine in ['right', 'left']:
|
||||
self.ux.spines[spine].set_visible(False)
|
||||
self.ux.set_facecolor('#f5f5f5')
|
||||
fig.subplots_adjust(
|
||||
left=0,
|
||||
bottom=0.040,
|
||||
right=1,
|
||||
top=1,
|
||||
hspace=0.0
|
||||
)
|
||||
self.canvas0 = FigureCanvasTkAgg(fig, self.Figurefrm_ENU)
|
||||
self.canvas0.draw()
|
||||
self.canvas0.get_tk_widget().pack( side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
|
||||
toolbar0 = NavigationToolbar2Tk(self.canvas0, self.Figurefrm_ENU, pack_toolbar=False)
|
||||
toolbar0.update()
|
||||
toolbar0.pack(side=tk.LEFT)
|
||||
### Call back event
|
||||
self.canvas0.mpl_connect("button_press_event",self.On_press)
|
||||
self.canvas0.mpl_connect("button_release_event",self.On_release)
|
||||
self.canvas0.mpl_connect("motion_notify_event",self.On_move)
|
||||
self.canvas0.mpl_connect('scroll_event',self.On_scaleing)
|
||||
|
||||
def PLOT_VIS(self):
|
||||
# -------------------------------------------------------------------------------
|
||||
# >
|
||||
# Method:
|
||||
# Brief :
|
||||
# Author: @KenanZhu All Right Reserved.
|
||||
# -------------------------------------------------------------------------------
|
||||
self.Figurefrm_Vis = tk.Frame(self.hwnd)
|
||||
self.Figurefrm_Vis.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
|
||||
|
||||
plt.rc('font', family='Segoe UI')
|
||||
plt.rcParams['xtick.direction'] = 'in'
|
||||
plt.rcParams['ytick.direction'] = 'in'
|
||||
fig, (self.satn, self.satvisb) = plt.subplots(
|
||||
2,
|
||||
1,
|
||||
figsize=(10, 0),
|
||||
sharex=True
|
||||
)
|
||||
fig.subplots_adjust(
|
||||
left=0,
|
||||
bottom=0.045,
|
||||
right=1,
|
||||
top=0.95,
|
||||
hspace=0.0
|
||||
)
|
||||
for spine in ['right', 'left']:
|
||||
self.satn.spines[spine].set_visible(False)
|
||||
self.satn.set_facecolor('#f5f5f5')
|
||||
for spine in ['right', 'left']:
|
||||
self.satvisb.spines[spine].set_visible(False)
|
||||
self.satvisb.set_facecolor('#f5f5f5')
|
||||
|
||||
self.canvas1 = FigureCanvasTkAgg(fig, self.Figurefrm_Vis)
|
||||
self.canvas1.draw()
|
||||
self.canvas1.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
|
||||
toolbar1 = NavigationToolbar2Tk(self.canvas1, self.Figurefrm_Vis, pack_toolbar=False)
|
||||
toolbar1.update()
|
||||
toolbar1.pack(side=tk.LEFT)
|
||||
|
||||
def PLOT_SKY(self):
|
||||
# -------------------------------------------------------------------------------
|
||||
# >
|
||||
# >
|
||||
# Method:
|
||||
# Brief :
|
||||
# Author: @KenanZhu All Right Reserved.
|
||||
# -------------------------------------------------------------------------------
|
||||
self.Figurefrm_Sky = tk.Frame(self.hwnd)
|
||||
self.Figurefrm_Sky.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
|
||||
|
||||
plt.rc('font', family='Segoe UI')
|
||||
fig = plt.figure()
|
||||
self.sattrack = fig.add_subplot(projection='polar')
|
||||
fig.subplots_adjust(
|
||||
left=0,
|
||||
bottom=0.03,
|
||||
right=1,
|
||||
top=0.95
|
||||
)
|
||||
self.canvas2 = FigureCanvasTkAgg(fig, self.Figurefrm_Sky)
|
||||
self.canvas2.draw()
|
||||
self.canvas2.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.YES)
|
||||
toolbar2 = NavigationToolbar2Tk(self.canvas2, self.Figurefrm_Sky, pack_toolbar=False)
|
||||
toolbar2.update()
|
||||
toolbar2.pack(side=tk.TOP, anchor='w')
|
||||
|
||||
def initSTATE_BAR(self):
|
||||
stateframe = tk.Frame(self.hwnd)
|
||||
stateframe.pack(side=tk.BOTTOM, fill=tk.X)
|
||||
self.plotstate = ttk.Label(stateframe, text="None")
|
||||
self.plotstate.pack(side=tk.LEFT, anchor='w')
|
||||
|
||||
def On_press(self, event):
|
||||
# -------------------------------------------------------------------------------
|
||||
# >
|
||||
# Method:
|
||||
# Brief :
|
||||
# Author: @KenanZhu All Right Reserved.
|
||||
# -------------------------------------------------------------------------------
|
||||
if event.inaxes:
|
||||
if event.button == 1:
|
||||
self.press = True
|
||||
self.lastx = event.xdata
|
||||
self.lasty = event.ydata
|
||||
|
||||
def On_move(self, event):
|
||||
# -------------------------------------------------------------------------------
|
||||
# >
|
||||
# Method:
|
||||
# Brief :
|
||||
# Author: @KenanZhu All Right Reserved.
|
||||
# -------------------------------------------------------------------------------
|
||||
axtemp = event.inaxes
|
||||
if axtemp:
|
||||
if self.press:
|
||||
x = event.xdata - self.lastx
|
||||
y = event.ydata - self.lasty
|
||||
x_min, x_max = axtemp.get_xlim()
|
||||
y_min, y_max = axtemp.get_ylim()
|
||||
x_min = x_min - x
|
||||
x_max = x_max - x
|
||||
y_min = y_min - y
|
||||
y_max = y_max - y
|
||||
axtemp.set_xlim(x_min, x_max)
|
||||
axtemp.set_ylim(y_min, y_max)
|
||||
self.canvas0.draw()
|
||||
|
||||
def On_release(self, event):
|
||||
# -------------------------------------------------------------------------------
|
||||
# >
|
||||
# Method:
|
||||
# Brief :
|
||||
# Author: @KenanZhu All Right Reserved.
|
||||
# -------------------------------------------------------------------------------
|
||||
if self.press:
|
||||
self.press = False
|
||||
|
||||
def On_scaleing(self, event):
|
||||
# -------------------------------------------------------------------------------
|
||||
# >
|
||||
# Method:
|
||||
# Brief :
|
||||
# Author: @KenanZhu All Right Reserved.
|
||||
# -------------------------------------------------------------------------------
|
||||
axtemp = event.inaxes
|
||||
y_min, y_max = axtemp.get_ylim()
|
||||
scaley = (y_max - y_min) / 10
|
||||
if event.button == 'up':
|
||||
axtemp.set(ylim=(y_min + scaley, y_max - scaley))
|
||||
elif event.button == 'down':
|
||||
axtemp.set(ylim=(y_min - scaley, y_max + scaley))
|
||||
self.canvas0.draw_idle()
|
||||
|
||||
def Clear_canvas(self):
|
||||
# -------------------------------------------------------------------------------
|
||||
# >
|
||||
# Method: Clear_canvas
|
||||
# Brief : clear the canvas
|
||||
# Author: @KenanZhu All Right Reserved.
|
||||
# -------------------------------------------------------------------------------
|
||||
self.ex.clear()
|
||||
self.nx.clear()
|
||||
self.ux.clear()
|
||||
self.satn.clear()
|
||||
self.satvisb.clear()
|
||||
self.sattrack.clear()
|
||||
self.canvas0.draw()
|
||||
self.canvas1.draw()
|
||||
self.canvas2.draw()
|
||||
self.plotstate.config(text="None")
|
||||
self.hwnd.update()
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
### LOad Config
|
||||
cfg = config.Configinit('config.ini')
|
||||
cfg.load_config()
|
||||
cfg_get = cfg.get_config()
|
||||
|
||||
### Call Back Process
|
||||
func = func.CALLBACK(cfg, cfg_get)
|
||||
|
||||
### Main Window
|
||||
hwnd = tk.Tk()
|
||||
mainui = MAINGUI(hwnd, func)
|
||||
|
||||
|
||||
Reference in new issue
Block a user