跳到主要內容

[Python] 用 Python + tkinter 建立第一個Windows應用程式

在Windows環境下要用Python開發帶有UI的應用程式,最快的方式就是使用Python內建的UI程式庫 - Tkinter。(關於Tkinter的相關背景知識可以在google搜尋"wiki Tkinter")

以下直上程式碼範例來看如何建一個Python + Tkinter的程式吧!
(本範例程式是在Python3.7.3環境中執行)

在程序最初先建立一個application class,然後在main的一開始產生application物件:
# coding=UTF-8
import tkinter
import socket  #for sockets
import sys #for exit
import os

class Application(tkinter.Frame):
    # Application构造函数,master为窗口的父控件
    def __init__(self, master=None):
        # 初始化Application的Frame部分
        tkinter.Frame.__init__(self, master)
        # 显示窗口,并使用grid布局
        self.grid()
        # 创建控件
        self.createWidgets()
        self.master.protocol("WM_DELETE_WINDOW", self.on_closing)

    def createWidgets(self):
                

    def on_closing(self):
        app.master.destroy()

app = Application()
app.master.title("WaferCheckApp")
app.master.geometry('800x600')
app.master.protocol("WM_DELETE_WINDOW", on_closing)
app.mainloop()

app.mainloop() 就進入主循環裡,程序會執行application class裡面的 __init__(...) function,這樣運行就可以看的一個版面空白的應用程式被執行了。




留言

這個網誌中的熱門文章

[Python] 以.py檔案產生Windows EXE 執行檔

如何開發能在Windows下執行的Python程式?你當然可以在Windows下安裝Python之後用command line運行你的 .py source code來直接執行程式,但是這方法基本上只適合開發中的程式,或是自己寫好玩只在自己的PC上執行的程式,也許適用。 但若你的需求是要在每個Windows的OS下都可以執行、且是不公開程式碼的,那就必須要將你的 .py source code包裝成EXE執行檔了,下面就介紹如何進行: –下載 auto-py-to-exe-master https://github.com/brentvollebregt/auto-py-to-exe 1. 解壓縮auto-py-to-exe-master.zip到想要的路徑下(路徑不能有空格或".") 2. 開啟Cmd console 到auto-py-to-exe-master路徑下 3. 在console下執行"pip install -r requirements.txt" 4. 在console下執行"python run.py" 運行完畢後就可以選取你要轉成執行檔的 .py 檔案,進行製作。 可參考下面的影片: 產生出來的檔案包含執行檔與其程式中會用到的相關Lib檔案,所以要將整個output資料夾中的檔案一併提取出來 (不要只拿執行檔出來)。 如此你就可以在任意的Windows上執行你的程式了。

[Python] 管理多個執行緒(thread)的運作與結束

在開發應用程式中,幾乎所有的專案都會用到thread,不同的程式語言有不同˙的叫用方法,但都大同小異。Thread的使用上最重要的不是在產生一個thread,而是如何結束一個thread,或是如何結束好幾個threads,以下介紹在Python中如何叫用並管理一或多個thread: 一般來說,create thread如下: def job(): while 1: print("Child thread:", i) time.sleep(1) #In main code thread = threading.Thread.__init__(job) thread.start() 這樣可以開始一個thread執行job()中的動作,但若job中的迴圈是如上範例的無限迴圈,必須要加上能讓其退出的機制: stopped = 0 def job(): global stopped while stopped == 0: print("Child thread:", i) time.sleep(1) #In main code thread = threading.Thread.__init__(job) thread.start() 這樣在主程序先將stopped設成1,再調用 thread.join() 就可以將thread完整關閉並釋放記憶體空間。 多執行續的處理: 基於這樣的方式,下面是進化版本,創建一個thread專用的class,並同時處理多個thread的執行與結束: class EventHandleThread (threading.Thread): def __init__(self, fun, name): threading.Thread.__init__(self) self.name = name self.fun = fun self.stopped = [0] def run(self): self.fun(self.name, self.stopped) print ("Exiting " ...

[ASP.NET] 網站架構MVC是什麼?

近十年網站設計領域最火的架構就是MVC模式,MVC是什麼? 其實MVC是一種軟體架構模式,把程式分成三個部分來分別開發、聯繫。最早是在西元1978年的阿公時代被提出的,近代被發現很適用於網站運作的模式,所以被拿來用在網站開發。 網路上有許多MVC的介紹,所以這裡話不多說,就直接介紹重點觀念就好~ V iew (視圖) - 介面設計人員進行圖形介面設計。 C ontroller (控制器)- 負責轉發請求,對請求進行處理。 M odel (模型) - 程式設計師編寫程式應有的功能(實現演算法等等)、資料庫專家進行資料管理和資料庫設計(可以實現具體的功能)。 簡單來說,可以想像成我們的程式從外(與外界溝通)到內(對內的資料處理)分別是: View→Control→Model 外界要與我們程式溝通一般來說是透過View這個介面來進行,而View會將外界的操作經過轉換整理,透過Controller提供的功能接口進行後續動作,若Controller的動作需要存取資料庫的資料,則會透過Model所提供的介面,進行資料存取。 OK,這樣就是一個基本的MVC架構的觀念了,接下來針對ASP.NET來說明MVC在實際source code是怎麼運作的: 以Visual Studio 2017建立一個ASP.NET Core的專案,可以看見專案預設會建好View、Controller、Model的資料夾,很直觀的,在view資料夾下就是放置網頁的檔案,controller下的檔案就是提供各種的API function供網頁端進行叫用,而Model下的就是Database的欄位對應的定義,提供讓controller進行資料庫存取用。 下面舉例在實際運作時會是什麼情況: 1. 透過瀏覽器(EX. Chrome、IE)開啟網站首頁(Home): 流覽器(client)透過網址(http url)連到網站(server),網站解析網址後發現是一個網頁,而後將網頁(html、javascript、jquery、css)回傳給流覽器(client),流覽器再將網頁檔案顯示在client端的視窗上。 2. 網頁上需要顯示網站資料: 在流覽器將網頁檔案顯示在client端的視窗上後,遇到要取得網站資料的情況時,流覽器發送http request給網...