【Python Tkinter】EP2 圖形介面應用程式開發-物件導向概論與 Tkinter 基本視窗設定

皇阿瑪數位學院
6 位粉絲
181 觀看·2024年10月27日
Python Tkinter 圖形介面應用程式開發,此系列課程教您如何利用Python 的 tkinter 模組,輕鬆開發視窗應用程式,就算您是 python 的小白,只要跟著視訊教學,跟著操作練習,您也可以開發一個視窗應用程式,Trust Me You Can Make It.
0:00 tkinter模組介紹
1:15 匯入tkinter模組並設定別名
3:35 建立第一個視窗程式
8:00 tcl問題解決與重新安裝Python 3.12
12:40 建立新專案 Python 3.12
16:50 物件導向觀念解說 建立類別 與產生類別物件
30:42 視窗標題設定 title方法介紹
31:18 視窗圖示設定 iconbitmap方法介紹
37:25 視窗大小設定 geometry 方法介紹
41:20 視窗最小寬高及最大寬高設定
44:50 視窗縮放設定 resizeable方法介紹
大家好,我是黃老闆老師
上一堂課我們已經把這個Python的SDK安裝好了
然後也安裝了這個PyCharm的開發工具
然後我們也建立一個新的專案了
來緊接著我們的重頭戲來了
我們這一堂課啦
等於是這個課程最主要是教各位
所以這一堂課要把我們的主角叫出來
我們的主角就是TKinter
那TKinter這個模組在Python2
它是一個需要去做Install需要安裝的
那在Python3它已經是內建的模組了
所以我們不用再透過這個叫
一般你只要說要安裝外部的模組啦
我們要透過這個PIPinstall來去做安裝
那因為在Python3
TKinter已經是內建的模組
我們就不用再去安裝
在使用的時候只要去把它
import進來就可以了
這個叫import
把它import進來
所以我們有請主角出場
第一個我們要去載入TKinter的模組
然後把它設定別名叫TK啦
不然你想一下
每次要用都要再寫TKinter
這樣太累了
就跟阿諾史瓦辛格
每次你都要寫阿諾史瓦辛格
阿諾史瓦辛格
這樣是不是很累
那我們就把它簡稱叫阿諾就可以了
所以我們import TKinter
Earth TK
這個就是它的別名啦
啊它的別名
到時候我們就不用再寫TKinter
只要寫TK就好了
那以後要做一些資料科學
會用到這個pandas這樣的一個模組
我們也都會直接把它Earth PD
或者要做這個
N要做陣列的操作
Numpy我們也會都把它Earth稱為NP
這大家已經都寫習慣了
就等於是都這麼操作
好當我們去import TKinter
這個模組之後
我們就可以使用
模組裡面的這個叫TK的class
來去建立TK的物件
這個TK的類別就是有關於視窗
有關於視窗
有關於一些圖形使用者
介面的一個工具
所以我們這個語法
TK它是一個列別
那我們直接透過這個
產生實體的方式
去產生TK的列別物件
然後這個Win
它就相當於是一個變數
就跟我們A等於10一樣
A它就是一個變數
那只是這個10它是一個literal
是一個字面值
那目前我們這個Win也是一個變數
只是TK這個到時候是透過TK的列別
產生列別物件
那這個有牽扯到OOP
事實上Python也是一個OOP
什麼是OOP呢
我們稱為Object Oriented Program
物件導向的程式設計
那現在絕大部分的軟體
都已經有OOP了
那這就是一種物件導向的程式設計語法
那待會會約略的跟各位講一下
因為各位都是小白
會為各位很快的講一下
Python怎麼去玩OOP
怎麼去產生列別
那怎麼去建立列別的屬性
或者建立方法
然後我們去產生列別物件之後
來去呼叫屬性跟方法
好那最後我們已經有產生一個
TK的視窗物件
物件參考名稱就叫Win
緊接著我們就可以調用這個
MainLoop這樣的一個方法
來去啟動你的視窗
好那麼現在把程式
實際上以程式來去佐證吧
不然空口無品
來第一個我們還是一樣
先去Import
TKinter
然後給它一個別名就叫TK
好那給它一個別名好了之後
我們緊接著是不是要調用這個模組的
TK的列別
然後去產生列別物件
所以TK.
那個TK要記得是大寫
它是大寫
因為這個列別名稱它就是大寫
然後我們給它一個物件參考名稱
叫Win好了
那各位讓你眼見為憑一下
我只按個鍵盤的Ctrl鍵
那滑鼠指標
我就直接移到這個TK來
按住Ctrl鍵移到這個TK來
OK它是大頭封的命名規則
這個頭封式的命名列別
絕大部分軟體我們都用頭封式
那頭封式就是第一個英文單字
就是一個英文單字啦
首字母大寫啦
今天假如說我就宣告一個列別名稱
宣告一個列別名稱叫MyPerson
好那以大頭封的命名方式
我們就My英文單字
My這個第一個字母我們就大寫
然後Person P大寫
這個就是一個大頭封的命名方式
那一般我們假如說在宣告列別
就好吧也是以這個大頭封
那Person呢
很習慣上也是用大頭封
來去命名我們的列別名稱
那這是一個道德層面
這不是法律層面
你不這麼命名
編譯器不會給你報錯啦
編譯器不會給你報錯
只是人家會覺得很奇怪而已
我現在第一個字大寫
第二個字不能大寫
第二個字這個是小寫的K才對
那我們來看一下這個列別
我寫小寫就寫到大寫
那我們現在來看一下這個列別
Ctrl鍵按著
滑鼠指標移到這個列別上點一下
各位有沒有發現
它是不是就class TK了
那這個列別底下
我按Ctrl F來去搜尋一下
搜尋這個叫MainLoop
有沒有
這裡它就有一個MainLoop的方法
就是啟動我們的視窗
好來我現在我去啟動一下
Win.MainLoop
OK所以兩三下子
我就開發一個視窗的應用程式
來我們去執行一下
執行就點一下右上角這個
Play的按鈕就可以了
OK它現在它跟我們講說
程式有bug
OK結果我們去執行
它拋出這樣的錯誤
它說這有可能我們的TCL沒有安裝好
所以有時候啦
並不是所有的東西都是最新的
就OK
你剛纔去查了一下官網
這是它那個Python 3.13的版本的那個bug
那到時候我們還要再去設定那個路徑
這樣太麻煩了
所以我們待會直接把那個版本移除掉
那去下載安裝Python 3.12就可以了
OK來那我們這個程式先留著
剛好也從這個錯誤中學習
那我先離開一下
那一樣我再先進到命令提示資源
我們去看一下
看什麼呢
看目前Python的版本
Python記得大寫的v-v
OK3.13它會不會到下一個3.13.1的版本
就把這個bug修改回來
它還沒有修改回來
我們先回到之前比較穩定版本
3.12的版本
再來我們進到控制檯裡面
先把原先的這個Python SDK
我們先把它移除掉
應用程式
已安裝的應用程式
我們去找到Python
好這邊把它解除安裝
它就是這個TCL
有可能那個在安裝的過程
它的本身模組有bug
路徑沒有對應到
因為我們是小白
到時候還要再去設定路徑
那反而太麻煩了
所以我們直接
就再去安裝之前舊的版本就好
那把這個啟動的
我們也都把它移除掉
好那都移除好了
我們是不是還要再上網去下載
那只是到時候下載
我們要下載的是3.12
就不是最新的
Python Download
好那Python Download這邊
你可以看到
它有3.14 Pre-Release
3.13它還是有bug在
它雖然有一些bug fix
可是還是有bug在
我們就直接去下載這個
3.12就好
下面這裡有一個3.12.7的
我們直接去download
好那捲到最下面來
我們要安裝的是這個
Windows 64
一樣就直接把它按下去
OK
存檔
好那存檔之後我們繼續來安裝
3.12.7就直接點左鍵兩下
Custom
記得兩個都勾
好那這個一樣
全部都打勾
下一步
那一樣讓這個
Python 3.12.4
那個All Users
安裝
好安裝成功
我們直接Close就可以了
Close完了
確認一下我們的版本是3.12
所以一樣進到命令體制資源
那去下個Python
-V
OK現在是3.12.7
那OK了之後我們再開啟PyCharm
好那我們開啟PyCharm之後
因為之前這個整個環境
它的執意器是3.13的
那我們現在已經把3.13移除掉了
所以我們很快的再去建立一個專案
好所以直接點一下
這個File選擇New Project
好那New Project Project Name
我一樣我就叫這個
GUI Application
那Location
它跟我講說這個
虛擬機器已經存在
這個指定的資料夾
可是它執意器不一樣
那我們這邊額外再建立一個新的資料夾
把它放在不同的資料夾
這樣不要去幹擾到
所以呢
我一樣跑到稀草欄
跑到稀草欄
那一樣我去新增一個新的資料夾
資料夾的名稱我就N好了
NGUI App
好了OK
好OK
好當我OK之後這邊
我一樣選擇Custom Environment
然後Environment選擇Create New
Type一樣是Virtual Environment
那我們的Base Python
執意器就是剛才安裝的3.12
因為3.13太新了有Bug
那我們這個
Make Available To All Projects
打勾
好了按Create
那它問你要開專案在哪裡
我們就在原視窗
This Window
好那我們一樣
就直接在你的根資料夾上面按右鍵
選擇New
選擇Python
我們一樣叫RAM
那有RAM.py
那至於這個PyCharm
我們不是重新安裝
剛才已經有設定快速鍵了
我們這邊直接去
import tkinterstk
然後再來我們是不是要去產生
tk的列別物件
所以調用tk模組點
這個tk
各位有沒有發現
在PyCharm這裡寫C
C就代表列別的意思
那我們要
去產生列別物件
tk
要記得小括號
那我們給它一個變數名稱
叫wit
那變數名稱各位可以自己決定
好來今天我們透過
MainLoop的方法來去啟動這個視窗
所以win.mainloop
OK來去執行一下
各位有沒有發現
我們的視窗就出來了
所以有時候我們是要從錯誤中
去學習啊
這個有時候
欸奇怪勒我的防線建置好了
啊怎麼還不行
啊不是我們的錯
不是我們的錯
是它本身
任何的軟體啦
包括Windows也是一樣啊
iOS也是一樣啊
常常新的推出
不是就有bug
啊bug
等到使用者用了反應之後
它才會去修正
所以我們使用者有時候也蠻可憐的
就是當白老鼠
好
那個第一堂課
讓你們去安裝Python最新的
結果有bug
啊我們上網去看一下
到官網去看一下
喔應該有人
反應啦
它下一個版本應該就會去做
把這個bug解除掉了
OK
好那這邊我們先探討一下啦
因為
剛剛有講過
這個是一個物件導向
OOP的概念
啊TK這是一個什麼
這是一個列別
那剛才那個
TK模組點TK
事實上就是產生
列別物件
產生
TK這個列別物件
那什麼是列別
什麼是物件呢
你可以把它想成
列別就是一個設計藍圖
當初上帝在創造人類
這個列別的時候
就設定一些屬性
跟一些方法
所以呢
由這個列別所產生的物件
產生這個你我他這個物件
就具有
這些屬性
有這些方法
舉個例子
有頭髮的屬性
那只是頭髮的屬性
有黃色的有黑色的
然後皮膚的屬性
有黑色的有黃色的有白色的
然後人類是不是就有一些方法
講話的方法
走路的方法
打人
喔沒有沒有打人的方法
反正也是
經由這個列別所產生的物件
就具有這一些屬性跟方法
所以呢
這邊為各位來介紹一下
什麼是列別
什麼是物件
所以首先我們來去宣告一個列別
絕大部分的程式員都用class
這個關鍵字來宣告列別
那列別名稱我們就叫person好了
來請接著冒號
那至於這個列別名稱
我們絕大部分的程式員
都用這個大頭封
至於什麼是大頭封
各位你有興趣
你就去google一下
什麼叫頭封式的命名
那至於這個頭封式的命名
我記得上一堂課
也有稍微提過一下
那頭封式的命名大頭封
每個英文單字
首字母大寫就對了
所以我這個person
就直接P是大寫
然後緊接著這個列別裡面
要一個叫constructor
這個叫建構值
那建構值是
為了要去建構列別物件
英文叫constructor
那中文我們就叫建構值
那在Python我們是透過initial
這一個特殊的函式
來去做建構值
所以我要再宣告一個函式
那在Python我們宣告函式
使用define
d-e-f這個關鍵字來宣告
然後函式名稱
這個建構值這是死的
你可以看到我打底線底線
initial
好那再宣告這一個function
一樣喔又要縮排喔
你如果沒有縮排
沒有按tab鍵
他自己又報錯了
那我按enter之後
Python自己會自動幫我縮排
因為他知道
你宣告一個這個建構值
緊接著
你要在建構值裡面寫程式
當然就是要縮排
那我這邊我設定一個物件屬性
self.name
預設使用者如果都沒有
去設定姓名的話
我預設給他叫黃阿瑪數位學園
ok
這樣我們的建構值就設定了
喔就只有一個物件屬性而已
來緊接著我要再去設定
兩個物件方法
那講到這一邊
要稍微
再涉獵更多的知識
我剛才我有講物件方法
方法英文叫method
好那剛才也有聽到
我講這個叫function
函式
函式英文叫function
ok
那這個在Python是好像青黃不接啊
如果是在C言C++
從頭到尾
我們都叫做function
都叫做函式
那在C++有所謂的一般函式
成員函式
因為C++有物件導向
那至於在Java呢
全部都叫方法
Java沒有所謂的function
Java程式員全部都是方法
那Python呢
有時候你會就看
有時候他叫函式
啊有時候他叫方法
老師
函式跟方法怎麼去區分
事實上只要在列別裡面
所宣告的在Java
我們都叫做物件的什麼方法
那函式外宣告的
就那個列別外宣告的
我們就都叫函式
函式可以直接來呼叫了
那方法要透過
列別物件啊
要透過列別物件
物件點方法
我這邊先額外再宣告一個那個
function
好這個在Java我們就在
Python我們就叫做函式
define say hello
好我是
function
好就這樣就可以了
那我們先看一下
這個宅男是不是有強迫症
我直接把縮排取消掉
他直接就報錯了啊
好他這報什麼錯
這個叫
ident dependent
啊就是我期望要有縮排
對是一個強迫症
那這個也一樣啊我把他
一樣又報錯了啊
ok 啊這個是一個函式
那緊接著老師就宣告
物件方法
那方法我宣告一個用來設定
那個
姓名的設定名稱啊
今天假如說
他沒有設定我
預設給他的名稱就叫黃阿瑪
蘇玉軒
啊搞不好人家不喜歡
要設定自己啊
這個叫小王
叫小三什麼的 ok 來
define
這個叫set name
好那你會發現這個物件方法
他自己會幫你加self
self就指的物件本身啊
然後再給他一個
這個變數叫 name
啊為什麼後面要加底線呢
就是不要跟你現有的啊
不要跟你現有的這一些
命名啊起衝突
ok 所以我就跟他講說self.name
就是我的物件屬性的 name
等於使用者所設定的
這一個姓名
好啊再來再定義一個顯示姓名的方法
啊這個也是一個方法
一樣define
我們就叫show name就好
那show name 我就直接print self.name
.name
好了那目前我們這一個 person 的列別
就宣告好了
那宣告好
我現在是不是要去產生列別物件
啊產生列別物件
語法就跟我們這個語法完全一模一樣
好列別名稱小括號
就可以產生列別物件
然後產生你的物件名稱要叫什麼
啊有了這個物件之後
就可以去調用物件方法
好所以我現在我要產生
一個叫 p1 的物件
啊 p1 的物件就是我的 person 列別
所以 person 小括號
這樣就產生了一個 person 的列別物件了
啊 person 列別物件之後
我直接去調用
這個 show name 這一個物件方法
我們就 p1.show name
那這時候印出來是什麼
我先把這兩行註解掉好了啊
現在印出來就印出
因為我預設給他的名稱叫
黃阿瑪數位學院
所以去執行各位有沒有發現
他直接顯示黃阿瑪數位學院
好啊第二個人 p2
person
一樣 p2 他是一個人類啊
的物件
然後緊接著他去調用一下 set name
比如說他設定名稱
那設定名稱如果就設定個名稱叫
這個 hello kitty 好了
好那設定好了
我再去顯示 p2.show name
這時候顯示當然就顯示什麼
hello kitty 了
他就會顯示 hello kitty
就不會再顯示黃阿瑪數位學院
ok 好啊各位你可以看到他現在
還是顯示
黃阿瑪數位學院我們來看一下啊
那這時候還是顯示黃阿瑪數位學院
哎他應該要顯示 hello kitty 了啊
結果我們現在調用的人啊
本來應該是小明的
結果寫到小王去了
調用的物件錯了啊
因為我這邊是 p1
這個人而不是 p2 這個人
所以他如果會印 hello kitty
也真的很嚇人啊
ok 我直接改成 p2 了啊
我們是 p2
是要透過 p2
那像剛才這邊寫 p1
你這裡當然就 p1 去秀
那 p1 去秀
p1 原本是叫黃阿瑪數位學院的
啊後來你調用 certain name
你去把他改個名稱叫 hello kitty
他就會直接去呼叫這個 certain name
啊把 hello kitty 丟給這個
變數啊把這個變數的值再指定給我的
物件變數
self.name
啊所以我們印出來就是 hello kitty
ok 那我剛纔是額外新增一個 p2 嘛
那 p2 我要去設定他的名稱啊
所以這邊我 p2.name 一樣
印出來就是 hello kitty
ok 這個就是一個
宣告列別
然後直接透過列別去擬出列別物件
然後用物件來去調用他的物件屬性
ok 啊調用他的這個物件方法啊
然後一樣啊去設定他的物件屬性
那自己這個 function say hello
哎你可以不用物件去調用
你不用透過物件來調用
因為他是 function 函式
他不是方法
像目前這個 show name 啦 certain name 啦
你如果沒有透過物件
想要直接調用我們來看一下
我現在直接要去調用這個叫 certain name
啊我要去調用 certain name 他就不行了
他跟你講說抱歉
我不認識這個 certain name
ok 因為他是什麼
他是宣告在列別裡面的方法
我們叫物件方法
一定要透過物件來去做調用
ok 啊你前面再給他一個像這個
這個一樣啊 p2 或 p1 都可以啦
那自己這個 function 呢 say hello
他是一個 function
你當然可以直接調用啊
我就直接寫 say hello
有沒有他就可以調用
我是 function
那自己這個 function
你要前面再加上物件來我先把它
乘坤大挪移一下啊
移下來因為要有物件先宣告
p1. say hello
來我看一下啊
他就不行了
因為這個不是方法
這不是方法啊
他跟你這邊也寫了嗎啊
寫說 p1. say hello person object
has no attribute say hello
意思就是說
他的這個 person 的列別
並沒有一個成員啊
沒有一個屬性叫 say hello
所以你當然不能用
person 列別所產生的物件來去呼叫啊
為什麼因為他是一般的函式啊
我們就直接呼叫就可以了
所以你剛開始初學 python
常常就會很納悶說
為什麼有一些我可以直接寫
啊有一些前面要加上什麼物件名稱啊
事實上在 python
物在列別裡面所宣告的了
我們就叫做方法啊
就叫做方法
物件方法
啊在列別外所宣告的叫 function 函式
我們可以直接去做呼叫 ok
好那
對於這個物件導向有個基礎概念之後
我們把這些程式我都把它註解掉了
啊把乘坤大挪移
ctrl shift 向下鍵啊
把乘坤大挪移移到最下面去
啊把剛才這兩行程式我們取消註解
那絕大部分的這個 IDE
註解取消註解的快速鍵都是
ctrl 加寫線
slash 啊就像一樣
把兩行選取之後按ctrl slash
就取消註解了
那取消註解好了我們繼續要去探討
這一個
tk inter
tk 這個列別的一些屬性跟方法
我們透過這兩行程式
第一個先產生 tk 的列別物件叫 win
啊然後調用他的那個 main loop 的方法
就可以產生一個視窗
對不對
那只是這個視窗
有一些屬性我們要設定啊
我要去設定這個視窗的圖示
設定視窗的標題要叫什麼
啊視窗的這個寬度啊
還有視窗他起始的位置
那視窗可不可以被鎖放
那我們來看一下他的一些方法啊
啊方法還有一些屬性的設定
第一個 title 這個方法
我們可以直接透過 title 這個方法
就來設定視窗的標題
ok 那至於要設定他左邊的那個
圖示我們是透過這個 icon
bitmap 啊
bitmap 這樣的一個方法來設定
那圖示檔的副檔名是 ico
啊圖示檔的副檔名是 ico
那至於這個圖示檔
你可以自己透過 illustrator 啦
透過 photoshop 啦
anyway 包括小畫家也可以啊
啊設計好了把它存成
.ico 這樣的一個圖示就可以了
ok 那我們待會直接上網去抓啊
上網去抓那個 free 的
那個小圖示啊
啊抓下來他存檔的格式是 png
我們再透過線上的轉檔程式
把它轉成 ico
然後再套用到我們的 tkinter
所以我們先把這兩個方法玩一下
title 設定視窗標題
然後再來 icon
bitmap 這個方法設定圖示檔
ok 那第一個我們先上網啊
我們先上網去抓一下那個圖示
我們先開啟瀏覽器
然後直接就輸入 free icon
好啊這裡
flat icon 這個網站上面很多嗎
我假如說我找個有關於 gold 的好了
anyway 你高興找什麼圖示自己去找
好有這麼多 gold 的圖示
這個還蠻漂亮
我就直接去download
download png 啊
re-download
好我就存在下載這裡
就叫 dog 好
好下載下來
我們要把那個 png 轉成
ico 所以我繼續再去網路上找
那個 free 的轉檔網站
png to ico
網路上很多了啊
有沒有看到這裡有一個
png 轉 ico
而且還是中文的
我們就用他給他一次機會
哎這裡有啊
我去選擇檔案
我剛纔在那個下載
好這個 dog 點 png
那我們到時候要轉檔的尺寸
不是尺寸
尺寸啊我給他大一點
這個72x72或80x80
96x96
三個都選好
ok 了之後我們就直接點開始轉換
好那轉換成功之後
下面他是不是就有了對不對啊
下面都有了他就只有幫我
幫我轉一個而已啊
我不是有72x72 80x80
然後96他就
我只看到這一個啊我先下載下來啊
ok 他在這裡啊
老師再按一下
好就是他啊
那下載下來之後我直接按右鍵
另存圖片了
現在還沒有下
那存一般我們就存在我們的專案
資料夾的根文錄
啊那我的專案資料夾在哪裡
看一下哇
這是我的專案資料夾是在
西朝底下的 ngui app
然後
gui application
這就是我的專案資料夾
那我就直接把它存在gui
application
這樣的一個專案資料夾裡面了
ok 來
好所以這邊西朝底下
ngui
app
gui application
那我的那個檔名不要那麼長啊
檔名叫 dog 就好
存檔
好那存好了之後
我們這邊就可以看到啊
回到PyCharm 欄
這邊就可以看到的 dog.ico
好那我們緊接著要去設定啊
設定視窗的屬性
第一個我們要設定視窗標題
那設定視窗標題
剛纔是不是就透過那個title的方法
啊透過title的方法
直接wing這個物件點title這個方法
然後跟他講說我的視窗標題
那這就叫數位學園啊
ok 那在Python
Python沒有character
他沒有字元
所以你的字串你要用單影號
或者要用雙影號
歡喜就好
你高興就好啊
你要用單影號或者雙影號都可以
為什麼因為Python他沒有字元
全部都是字串
好那我的這個標題設定好了
馬上去執行一下對不對
ok 各位有沒有發現標題是就
黃阿瑪數位學園
目前這個icon是他預設的
我們要改一下
啊那個icon我們是透過
這個方法wing點啊
這個我們稱為icon bitmap
然後給他你的那個檔案的名稱
啊他是要一個字串啊
所以一樣這邊老師用單影號來檔
字串啊
dog.ico
好那麼再去執行一下
哎有沒有發現啊
我們的視窗的圖示
就變成剛才那一隻可愛的小狗
ok 好那繼續來看其他的啊
多寫一下註解好了
這個是設定視窗的圖示
那再來我們要去設定視窗的大小
那設定視窗的大小
我們來看一下他用哪一個方法
來去設定視窗的大小
一般要設定視窗的大小
是透過這一個叫
geometry
這一個方法
那這個方法
後面這個是座標座標我們先不看啊
你要去設定這個視窗的大小
他是寬度乘上高度
啊裡面的格式是一個 str
是一個字串的格式
這是蠻奇怪的
他當初他的 api 就是這麼寫了啊
所以我們設定視窗的寬度高度
就是透過
這個叫geometry
這樣的一個方法來設定
啊記得他的內容是字串
舉個例子我要設定寬度是600乘400
我就要這麼寫600
x 啊這個 x 就是乘400
他就是這麼另類啊
600乘400
那我們直接來設定一下啊
好 win
點
geometry
好當我選擇geometry
做大括號之後來有沒有發現了啊
他這一邊
這個地方啊
他就跟你寫說哎
裡面的內容要是那個 str 要字串
那假如說你要再去定位了
因為他預設出來都是在左上角這裡
我說我要置中
啊要置中這個有一些細部的
我們待會來看他啊
那最主要他這一邊就是寬度
乘上高度
然後加上 x 座標加上 y 座標
我現在先不管啊
我們今天直接設定寬跟高就好
所以呢我的寬度要600
好啊乘你要用 x 哦你不能用星星哦
用星星他就不理你了啊
x 400
好那我們再去執行
各位有沒有發現視窗的寬度
高度就是600 400
那再來他現在是不是可以可以縮放
對不對可以讓我們去做縮放
那有時候我們會讓他縮放啊
可是縮放總是人總是有個限度嗎
對不對
哎人總是有個限度
哎我要縮小一點
或不能再小了
就是有可能跟他講說好你要縮可以
啊不管怎麼縮
就是我到這個300x200
因為你如果300
再小於300x200的話
哎我的程式有可能就亂掉啊
啊你也可以放大啊放大最大
哎如果我就讓他到800x600
那這個在哪邊設定呢
我們來看一下了
還是透過方法就對了啊
不同的方法
有沒有發現這裡有一個方法叫
min size
那min size
他就有這個width的屬性
他是透過width跟height的屬性啊
啊mix size
最大寬度也是透過width的屬性
跟這個height的屬性
就跟我們剛才這個geometry不一樣
geometry這個是直接一個字串
來設定寬跟高啊
那這兩個方法設定視窗最小寬度
設定視窗最大寬度
他是要透過這個
width和這兩個屬性來去做設定的
ok 來
那我們再把這兩個方法去玩一下了啊
第一個我去設定
視窗最小寬度
最小寬度
那我們直接調用wind.min size
那min size
你不能就直接用字串了啊
你要跟他講說哎
min size寬度好
寬度如果是400好了啊
然後再來高度
或是200
好我們來去執行一下
這時候我去縮放
我去縮小
縮小縮小
啊縮到你400 200之後他就卡住了
就不能再讓你縮小了
如果沒有這一行的話
他就可以給你一直縮了
縮到你高興
啊這樣我現在
我再去說啊
縮小有沒有他並沒有限制啊
你可以一直縮縮到無限小
那麼這一邊
把它取消就好來再來
他要設定那個最大寬高
ctrl 加 d 一下啊
ctrl 加 d
這個好像在 adobe 的軟體
啊 photoshop 啦
illustrator 啦
還有 gweber 啦
ctrl 加 d 是不是就叫做什麼
就叫做這個叫再製啊
對不對叫再製啊
在 python 我們ctrl 加 d
也是再製就是複製加貼上
你就不用把它選取
然後什麼右鍵啦copy 啦
不用不用不用啊
就直接插入點移到這裡
按個ctrl 加 d 他就再製了
啊再製好了你要去移位置
ctrl 加 shift 加上下鍵啊
我還是寫一下好了
啊要移動上下
啊你要上下移動位置就直接ctrl
加 shift 啊
加這個上下鍵
來那我現在就ctrl shift 向下好
這個把它改成
視窗的最大寬大啊
好那
我一樣我直接把這一行
ctrl 加 d 複製一下
那在移位置就把 min 改成 max
那寬度我最大到800
600好來我們再去執行
好這時候縮小
最小就是400兩啊然後最大
400 200現在沒辦法再縮了
啊最大就是800
600好那再來
有時候我不想讓他去縮放啊
你不想讓他縮放
我們就不會再去加這個
所謂的 min size 啦
min size 啦啊
那我先把 min size 跟
max size 先註解掉
因為我就不想讓他縮放
那不想讓他縮放
我們是直接透過這個方法
叫 resizable
透過這個 resizable 這個方法
啊這個是布林子
你如果都寫 1 的話
那那乾脆就不要寫了
因為都寫 1 就是預設
水平垂直都可以縮放
啊預設就可以縮放啊
你之所以要調用這個方法出來
之所以要調用這個方法出來
就是說哎我有可能哈
我是不讓他縮放
啊不讓他說放就直接寫 0 0
啊這個是 x 啊這個是水平啊
啊這個是垂直的
我們也可以限定他說
水平可以給你說放
可是垂直不能說放啊
1 就是觸 0 就是 force
你也可以直接打觸 force
在我們 python 觸 force 那個 t 是大寫
force 是小寫
這一些都可以可是這 cp 值不高啊
因為你還要打這麼多個字
我們直接寫1就是代表觸
0 就是代表 force 啊
好來我們現在玩一下吧
好我如果不讓他去做說放啊
設定
說放功能好 win 點
那你不要直接都寫11啊
那寫11就乾脆不要做就好了啊
他這邊是不是就寫寬
寫高對不對啊
這個不用管他了這是他比較
有時候 python 他是
比較高規格的語法啊
表示把它關掉好
不然你看到他一直提示以為是錯
那沒有錯了
只是你的寫你的那個寫法空格
他認為不 ok 來
我在執行
這時候是不是就可以
你還是可以說放嗎對不對
滑鼠指標語過來是不是
水平垂直都可以說放
啊你幹嘛要寫異色就是都可以說放
好那我現在我這麼寫
我跟他講說
垂直可以說放啊
就是你的那個
高可以說放可是寬抱歉
我不讓你說放來我再執行看一下
高度你要怎麼說啊要怎麼說放隨便你
好可是寬度抱歉我卡住了啊
我的寬度
有沒有嘿嘿
這時候老師左鍵按著去拖曳
他不讓我拖啊
他不讓我拖啊你說
我就是要把我的視窗固定600乘400
你都不能去調整大小
ok 這時候你就
resizeable 全部把它設為0
那我們全部都設為0之後
他就不會再出現那個可調整的了啊
有沒有發現這時候我要去說放
就沒有辦法說放 ok
好我們先到這裡了
這一堂課就先到這裡
因為再講下去怕各位
想睡覺啊 ok
那這一堂課先到這裡我們已經瞭解了
視窗的標題視窗的圖示
怎麼設定視窗的大小
那視窗的最小寬高最大寬高
還有視窗可不可以說放
這個怎麼去取得螢幕寬度還有設定
你的視窗怎麼去置中
這需要再講解我們下一堂課
且聽分享 ok
那各位這一堂課就到這裡了
那喜歡別忘了按個讚
或者點訂閱哦
下一堂課見拜拜
