發表於 PyQT5Python

【Python】PyQT5 Sin,Cos Matplotlib 動畫應用程式 -7 PyQt5 完整製作應用程式!

Hello~ Internet!
這個系列的最後一篇來了呀! 在這一篇直接把所有第0篇影片中的應用程式功能做出來吧!
這次的UI介面檔案我一樣推薦直接去 github 下載喔!
我會一段一段的解釋 Code 然後再給大家看全貌!
如果還不理解 UI 設計與分離的文章的話,可以先看這一篇的介紹喔!
或是想先了解怎麼把 Matplotlib 嵌入 PyQt5 中的話推薦先去理解後再來看這篇喔!
那我們開始吧!

這篇會介紹到:

  • 直接實戰!

直接實戰!

UI

首先,先介紹一下 UI 的部分吧!
我放置了很多的 Layout 來保持元素對齊,還用了另一個 Layout

QFormLayout

FormLayout 有一個特點就是,它每一列只能存放兩個元素,通常是放一個 Label 和一個輸入的元件。

這個我認為用來對其元件和管理元件真的很方便~

接著就是一個站畫面很大空間的 Widget。
畫面有一點點複雜,建議去 github 直接看原始設計喔~

Main.py

為了方便收集我們設定的資料( 像是公式的參數等等 )
我習慣使用 dict 來處理

至於繪圖種類我就拿 ComboBox 的順序當作種類的編號
0 => Sin 波
1 => Cos 波

然後事件部分,我是設定只要繪圖種類有更改的話都會重新繪圖一次

self.config = {}
self.updateConfig()

# 更新 Config 的 Function
def updateConfig(self):
    self.config["f"] = float(self.f_input.text())
    self.config["a"] = float(self.a_input.text())
    self.config["theta"] = float(self.theta_input.text())
    self.config["delta"] = float(self.delta_input.text())

# 繪圖種類更改的時候就重新繪圖一次
def change_Draw_Figure_Type(self, Value):
    self.canvasRenderer.changeDrawType(self.comboBox.currentIndex())
    self.draw()

CanvasRenderer

繪圖部分並沒有太多的改變
就是繪圖種類改變實會重新繪圖

def changeDrawType(self, drawType):
    self.reset()
    if drawType == 0:
        self.DrawType = drawType
        self.fig.suptitle("Sin 正弦波", fontproperties=self.zhfont1)

    elif drawType == 1:
        self.DrawType = drawType
        self.fig.suptitle("Cos 餘弦波", fontproperties=self.zhfont1)

def clearCanvas(self):
    # self.fig.clf()
    self.axes.clear()
    self.axes.grid(True)


def reset(self):
    """讓 MainWindow 較好呼叫 回歸初始狀態"""
    if self.timer is not None:
        self.timer.stop()
        self.timer = None

    self.X = None
    self.Y = None
    self.updateTime = 0
    self.axes.clear()
    self.axes.grid(True)

reset 部分就是把所有的變數都回歸 initial 的狀態~

那大致上整個程式就完成了~ 耶~~
大家可以下載下來跑跑看或是自己研究看看( 雖然不是多複雜的程式啦XD )

當然~這次也是一樣的~
完整程式碼我都放在 gtihub 上給大家直接下載喔~
在這裡 github ep7


結尾:

這次就是最後一篇啦~
不知道大家覺得會太簡單或是太困難呢?
我自己是覺得有點太多篇了(?)
有什麼想法歡迎留言跟我說喔!
下一次我還有一個跟深度學習有關的大計畫
會用到 Reinforce Learning 的計畫,到時候再上來發給大家囉~

不知道大家覺得這樣的系列文好不好 在下面留言告訴我喔
或是有什麼其他的想法都可以告訴我喔~
(不敢公開留言的話可以用 聯絡我 寄信跟我說喔~

那就先這樣啦!
我們下一篇見囉!

ㄅㄅ

作者:

一位 熱愛資工領域、喜歡好笑事物、偶爾打打網球 的學生 ! For A Better Me!

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.