一、畫圖類
class DrawCanvas(FigureCanvas):
def __init__(self, parent=None, width=1, height=1, dpi=1):
# 設定中文顯示
plt.rcParams['font.family'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 新建一個繪圖物件
self.fig = plt.figure(clear=True)
self.axes = self.fig.add_subplot()
FigureCanvas.__init__(self, self.fig)
def draw_pie(self, ip, data):
label = ["空閑", "已用"]
self.axes.set_title(ip+" 記憶體使用量")
self.axes.pie(x=data, labels=label, autopct='%.1f%%')
self.axes.grid(True)
def draw_colum(self, ip, data):
self.axes.set_title(ip+" CPU使用量")
# 設定坐標軸百分比化
def to_percent(temp, position):
return '%1.0f' % temp + '%'
width = 0.5
X = ["5S", "1m", "5m"]
self.axes.bar(X, data, width, label="CPU使用量")
self.axes.yaxis.set_major_formatter(FuncFormatter(to_percent))
self.axes.grid(True)
二、Qt界面

界面上兩個widget控制元件都做了畫圖類的提升
三、按鈕呼叫代碼
def display_info(self):
# telnet 回傳字典info{'mem':float, 'cpu':[], 'vlan':str, 'ontime':str}
self.info = telnet_h3c_5560_552(self.ip, self.pw, self.xingh)
# 根據不同型號,排列記憶體使用量和空余量順序
if (self.xingh == "S5560" or self.xingh == "S6520"):
self.mem = [self.info["mem"]/100, float(Decimal(str(100))-Decimal(str(self.info["mem"])))/100]
else:
self.mem = [float(Decimal(str(100))-Decimal(str(self.info["mem"])))/100, self.info["mem"]/100]
# 顯示初始化時隱藏的widget控制元件
self.widget_mem.setVisible(True)
self.widget_cpu.setVisible(True)
# 記憶體使用量
self.widget_mem.mpl.axes.cla()
self.widget_mem.mpl.draw_pie(self.ip, self.mem)
# CPU使用量
self.widget_cpu.mpl.axes.cla()
self.widget_cpu.mpl.draw_colum(self.ip, self.info["cpu"])
# 顯示vlan資訊
self.label.setVisible(True)
self.label_vlan.setText(self.info["vlan"])
# 顯示在線時長
self.label_4.setVisible(True)
self.label_time.setText(self.info["ontime"])
四、意圖和問題
我就想根據界面右邊不同設備的資訊輸入,點擊確定按鈕之后,在左邊能顯示不同的資訊。為什么畫完一個設備的圖之后我選擇第二個設備,再點擊確定,其他資訊都會重繪,但是兩個圖卻還是上一個設備的資訊呢?請大神賜教。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/228044.html
