PyQt5和matplotlib簡單結合的例項

2022-03-14 19:57:24 字數 2261 閱讀 1380

demo

code

import sys

import matplotlib.pyplot as plt

import numpy as np

from matplotlib.backends.backend_qt5agg import figurecanvasqtagg as fc

class mywidget(qwidget):

def __init__(self):

super(mywidget, self).__init__()

self.init_ui()

def init_ui(self):

self.resize(1000, 500)

# 解決無法顯示中文

plt.rcparams['font.sans-serif'] = ['simhei']

# 解決無法顯示負號

plt.rcparams['axes.unicode_minus'] = false

# 按鈕

self.one_btn = qpushbutton('畫一條線')

self.more_btn = qpushbutton('重複畫線')

self.reset_btn = qpushbutton('重置')

# 按鈕繫結方法

self.one_btn.clicked.connect(self.draw_cmd)

self.more_btn.clicked.connect(self.draw_cmd)

self.reset_btn.clicked.connect(self.reset_cmd)

# 設定畫布部分

self.fig = plt.figure(figsize=(10, 4), dpi=80)

self.canvas = fc(self.fig)

# 新增第乙個圖

self.ax = self.fig.add_subplot('121')

self.ax.set_title('畫一條線')

# 新增第二個圖

self.ax1 = self.fig.add_subplot('122')

self.ax1.set_title('重複畫線')

# 設定布局,將元件新增到布局中

self.layout = qvboxlayout()

self.layout.addwidget(self.canvas)

self.layout.addwidget(self.one_btn)

self.layout.addwidget(self.more_btn)

self.layout.addwidget(self.reset_btn)

self.setlayout(self.layout)

def draw_cmd(self):

try:

# 如果是點選畫一條線的按鈕,就先清除內容

if self.sender() == self.one_btn:

ax = self.ax

ax.cla()

self.ax.set_title('畫一條線')

# 如果是點選重複畫圖的按鈕,就不清除原先的內容

elif self.sender() == self.more_btn:

ax = self.ax1

# 繪圖部分

x = [i + 1 for i in range(5)] # x軸

y = np.random.randint(0, 10, 5) # y軸

ax.plot(x, y) # 折線圖

self.canvas.draw() # 繪製

except exception as e:

print(e)

def reset_cmd(self):

try:

# 清除內容

self.ax.cla()

self.ax1.cla()

# 重新設定標題

self.ax.set_title('畫一條線')

self.ax1.set_title('重複畫線')

# 重新繪製

self.canvas.draw()

except exception as e:

print(e)

def start():

m = mywidget()

m.show()

if __name__ == '__main__':

start()

pyqt5切換python版本 pyqt5介面切換

主要的思路就是建立兩個frame 如果有兩個以上同理 使用setvisible 函式顯示或者隱藏frame 引數是bool值 import sys from pyqt5.qtwidgets import from pyqt5.qtcore import from pyqt5.qtgui import...

學習PyQt5(三) PyQt5的訊號和槽

我 如圖所示,我們建立乙個按鈕及乙個瀏覽器。什麼是訊號?比如按鈕的單擊,雙擊,按下,釋放等,都可以認為是乙個訊號 什麼是槽?對應的訊號,做出什麼應對,這要乙個應對在乙個函式中,我們可以認為這就是乙個訊號 槽關係 在qt designer中點選工具欄 注意不是工具盒 中的這個圖示 點選這個圖示後,就進...

PyQt5和SystemHotKey構造全域性熱鍵

測試了3個熱鍵庫,最終systemhotkey庫使用最簡單,安裝方法 簡易的demo,搬運官方 from system hotkey import systemhotkey hk systemhotkey hk.register control shift h callback lambda x p...