山姆的編程實作分享。。。

Sam Blog, Sam Sharing, Sam Studio

2021年7月24日

[Kivy] 在 PyCharm 建立 Kivy 的開發環境


 在挑選配合 Python 的 GUI Framework 時,Qt 和 Kivy 則是在眾多的 Framework candidates 中,最後留下細細研究的兩個 ,經過了開發環境的安裝以及淺嚐 "Hello World”App 的建立後,最最最後~,我決定了 Kivy。

原因如下:

  • MIT License

  • Open Source on GitHub

  • Cross-Platfrom, Kivy App can run on Windows, Linux, OSx, Android, iOS and RaspBerry Pi

  • Built-in OpenGL ES for GPU Accelerated


Kivy - 簡介


What is Kivy ? Kivy Introduction,這些問題我就交給 Kivy 官方網站了!

因為 Kivy  的官網以及它 WiKi上的 Documents 都提供相當多的資訊了,想對 Kivy 有初步的了解,是足夠的。



在 PyCharm 建立 Kivy 的開發環境 (On Windows 10)

Kivy 的開發環境,基本上是建立在 Terminal Mode,對於 IDEs 的開發環境倒是沒有多加說明。在 PyCharm 建立 Kivy 的開發環境,Kivy 雖有說明,我是有看沒有懂啊!於是就將自己的建立過程做了以下紀錄,分享給大家。


Step 1 - 安裝 Python 

首先就是點這連接 Download and Install Python 安裝 Python。


Step 2 - 建立 Virtual Environment (VM) for Kivy


python -m virtualenv kivy_venv


開啟 Windows 的 terminal,然後選定或建立一個資料夾,接著在選定的資料夾下執行上面 Command,來建立 kivy 要使用的 VM。  

以我為例,我是將 PyCharm 要用的 VM 都建立在 PyCharm 的工作目錄下,下圖可以看到我建立了 3 個 VM,分別用於 Kivy,MicroPython 以及 normal python。


下圖則是 Kivy VM 的檔案結構



Step 3 - 激活 Kivy VM  


kivy_venv\Scripts\activate


Kivy VM 建立好後,還不能使用,必須激活 (activate) 它,方法就是在 Kivy VM 的目錄下,執行上面 Command。


Step 4 - 安裝 Kivy  以及範例


python -m pip install kivy[base] kivy_examples


執行上面 Command,就能安裝 Kivy 基礎的 (base) 套件,若想要多安裝其他套件或完整套件,則可以在中括號內,改成 [base, media] 或是 [full]。

通過以上 4 步驟就完成 Kivy Framework 的安裝了,基本上你已經可以在 Terminal 開發 Kivy App 了。

剛才的 Kivy 安裝步驟裡,也包含範例的安裝,執行以下 Command 就能驗證你是否有安裝正確,以及觀看 Kivy GUI 的 Demo 喔!


python kivy_venv\share\kivy-examples\demo\showcase\main.py


PS: 以上 Install Kivy 以及建立 Kivy VM 更詳細的操作步驟,請參考 Kivy.org 的  Installing Kivy 說明網頁。


Step 5 - 在 PyCharm 建立 Kivy 專案 (Project)  

  1. 打開 Pycharm 後,請點選 File ->  New Project 來建立新專案。

  2. 接著在建立新專案視窗 ,如下圖紅色框,選擇 “Existing interpreter”,其x路徑就是你在 Step 2 建立 Kivy VM 下 python.exe 存在的目錄路徑。


  1. 順利完成新專案的建立後,點選 File -> Settings > Project  ,應該就能看到和下圖一樣是使用 Kivy VM 的設定了。


Step 6 - Copy & Paste then Run HelloWorld.py App

在還不了解如何撰寫 Kivy App 前,可以複製貼上,下面 “Hello World”的範例原始程式碼,來驗證 Kivy 在 PyCham 的執行環境。


'''

Application example using build() + return

==========================================


An application can be built if you return a widget on build(), or if you set

self.root.

'''


import kivy

kivy.require('1.0.7')


from kivy.app import App

from kivy.uix.button import Button



class TestApp(App):


    def build(self):

        # return a Button() as a root widget

        return Button(text='hello world')



if __name__ == '__main__':

    TestApp().run()


順利的話,你應該能看到和下圖一樣的結果。






 


2021年7月23日

[C#] 學習 C# 值得 ?


 學習 C# 值得 ?


因為工作的機緣,需要 maintain 一個 Window GUI 測試程式以及擴充它的功能,原始版本是用 WinForms 寫的,但是程式碼的註解以及變數名稱,毫無閱讀性,基於這個原因,我決定不再 maintain 它了,打算自己重新打造一個。


記得開始寫第一個 Window GUI 應用程式是在 1998 年左右,使用的技術是 MFC;如今 MFC 已經走入歷史,現今的 Visual Studio 2019 又只有 WinForms 和 WPF GUI 應用程式模板 (template)可供選擇了,但是這兩種做法對我而言都是新的,於是就先做了一番功課,再決定要用 C++ , C#, WinForm 或是 WPF 來撰寫新程式。


在翻天覆地的資訊搜集過後,發現:

  • 微軟計畫在2021年底將正式推出 .NET6, MAUI 以及 Visual Studio 2022,且目前 .NET 6, MAUI 以及 Visual Studio 2022 都有 preview 版本了,也釋出相當多的訊息了,在詳閱相關的發文後,發現 C# 以及 WPF 才是微軟要主流的, 並且 WinForms 也將只會有 maintain 了 ,不會再新增功能了。

  • MAUI 是繼微軟買 Xamarin 後,將其整合到 Visual Studio 的第二版 Cross-Platform Framework,很期待他的表現。


知道 C# 以及 WPF 才是最佳的選擇後,心中還是有一個問題,那就是" C# 值得學習 ?”, WPF 的應用程式還是可以以C++撰寫,真的要投入 C# 嗎 ?

於是就上了 TIOBE 網站查看 C# 程式語言的排名以及趨勢,從這篇文章 (TIOBE Index for July 2021) 可以看到 C#  在2021 的排位是 5,2020 也都第五。 


以 Long Term History 來看也是第五,不錯喔!


再以趨勢圖來看,C# 的使用者還穩定的在成長中。


從 TIOBE 的這些知訊來看 “C# 不是落日黃花"。


使用 C# 與 WPF 開發 GUI 應用程式也有月餘了,功能介面也完成大半了,這一個月的使用心得是:

  • 使用 XAML 來描述 Controls 的擺放、屬性、Data Binding 以及 Event Handler ,這讓程式碼看起來更將簡潔了,這延續 Xamarin、Android 的 XML 設計理念,真的做的好啊,尤其對我開發過 Android App 的人,更加有熟悉感。

  • 撰寫程式過程中,難免遇到問題,發現上網搜尋,幾乎都能或多或少得到一些解法或是相關範例,這著實讓我感覺 C# 社群的強大啊!


基於以上原因,我覺得已經會 C/C++ 程式語言的人,投入/轉換到 C# 與 WPF 的程式開發是值得的;另外想掠過 Swift、Java、Dart 程式語言學習,而能直接開發 Android / iOS App 的人 ,C# 則是提供這樣選擇了。







 


2021年7月16日

[RTOS] ArmMbed, Embox, FreeRTOS and Zephyr 超級比一比


[RTOS]

Mbed, Embox, FreeRTOS, Zephyr

超級比一比


偶然的機會看到 Embox 的介紹文,進入網站後,它的 mission 深深打動了我 ...


於是將那份感動,轉化為以下的實際行動,就是將我知道的 Open Source RTOSes ,

做了一番比較,如下。

Zephyr : 我認為是 Linux 在沒有 MMU 的 embedded system 的延伸,

相信不久的將來,使用Zephyr的產品會更加全面。

armMBED : 我原先很看好它,想再深入研究,但他被購併的消息一出,

我就淡了。

FreeRTOS: 老牌的 RTOS,就是這樣了。 

Embox : 相比於其他 3 個 RTOSes,它的 mission 下的真好,但從比較表中,

可以清楚感覺到 "它真的很 Junior",社群資源薄弱,相關文件也還不夠完整,

要使用它來開發產品,還真的要三思啊!


 


熱門文章