不間斷 Python 挑戰 Day 31 - 使用tkinter開發GUI程式:視窗元件配置

更新於 發佈於 閱讀時間約 33 分鐘
上一篇文章介紹了多種tkinter的視窗元件後,這篇我們再來討論三種視窗元件的配置方法以及優缺點,以適當移動各個元件到視窗中指定的位置,讓整個視窗版面的配置看起來更合理且美觀。
這三種配置方法包括:
  • pack()方法
  • place()方法
  • grid()方法
以下就一一來說明。

pack()方法

pack()方法在上一篇文章有出現過,當時是為了讓元件能在視窗上顯示出來,並沒有帶入任何參數,也就是使用預設的參數,由上往下開始排列元件。

side參數

side參數可以設定元件的排列方式,可設定的參數值如下:
TOP:由上往下排列,這是預設的排列方式
BOTTOM:由下往上排列
LEFT:由左往右排列
RIGHT:由右往左排列
例如,以下範例設定由上往下排列,和預設的排列方式相同。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.minsize(width=300, height=0)

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

label1.pack(side=LEFT)
label2.pack(side=LEFT)
label3.pack(side=LEFT)

window.mainloop()
執行結果:
由上往下排列
以下範例設定由左往右排列。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.minsize(width=300, height=0)

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

label1.pack(side=LEFT)
label2.pack(side=LEFT)
label3.pack(side=LEFT)

window.mainloop()
執行結果:
由左往右排列

padx/pady參數

padx/pady參數可設定元件和元件之間或是元件和視窗邊界之間的水平/垂直距離,單位為像素。
例如,我們在前一個範例加上水平方向10個像素的間距,注意label 1和label 2之間、以及label 2和label 3之間,因為各自增加了10個像素的間距,所以最後的間距為20,而label 1和視窗邊界的距離為10。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.minsize(width=300, height=0)

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

label1.pack(side=LEFT, padx=10)
label2.pack(side=LEFT, padx=10)
label3.pack(side=LEFT, padx=10)

window.mainloop()
執行結果:
增加外間距

ipadx/ipady參數

ipadx/ipady參數可設定元件內文字和元件邊界的水平/垂直距離,單位為像素。
以下範例設定標籤文字和標籤邊界的水平距離為10。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.minsize(width=300, height=0)

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

label1.pack(side=LEFT, ipadx=10)
label2.pack(side=LEFT, ipadx=10)
label3.pack(side=LEFT, ipadx=10)

window.mainloop()
執行結果:
增加內間距

fill參數

fill參數可延伸填滿元件被分配的空間,可設定的參數值如下:
none:預設值不延伸
x:水平方向填滿被分配的空間
y:垂直方向填滿被分配的空間
both:水平及垂直方向都填滿被分配的空間
以下範例設定label 3延伸填滿垂直方向到視窗的邊界,但不影響水平方向的長度,因為水平方向被分配的空間是固定的。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.minsize(width=300, height=50)

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

label1.pack(side=LEFT, ipadx=10)
label2.pack(side=LEFT, ipadx=10)
label3.pack(side=LEFT, ipadx=10, fill="both")

window.mainloop()
執行結果:
垂直填滿空間

expand參數

expand參數可填滿額外的視窗空間。以下範例設定label 3填滿到水平及垂直方向的視窗邊界。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.minsize(width=300, height=50)

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

label1.pack(side=LEFT, ipadx=10)
label2.pack(side=LEFT, ipadx=10)
label3.pack(side=LEFT, ipadx=10, fill="both", expand=True)

window.mainloop()
執行結果:
填滿額外空間

place()方法

place()方法可直接設定元件的左上方位置要顯示在視窗上的座標,視窗左上角的座標為x=0、y=0,向右x座標遞增,向下y座標遞增。

x/y參數

x/y參數可設定元件的x/y座標,以下範例將三個標籤的位置分別設定在(x=0, y=0)、(x=100, y=0)、(x=200, y=0)。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.geometry("300x20")

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

label1.place(x=0, y=0)
label2.place(x=100, y=0)
label3.place(x=200, y=0)

window.mainloop()
執行結果:
設定絕對x/y座標

height/width參數

height/width參數可設定元件的高和寬,以下範例標籤擺放的位置不變,將寬度拉長。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.geometry("300x20")

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

label1.place(x=0, y=0, height=20, width=90)
label2.place(x=100, y=0, height=20, width=90)
label3.place(x=200, y=0, height=20, width=90)

window.mainloop()
執行結果:
設定絕對高度及寬度

relx/rely參數

relx/rely參數可設定元件在視窗的相對位置,參數值的範圍在0.0到1.0之間,relx=0.0代表視窗的最左邊位置、relx=1.0代表視窗的最右邊位置,rely=0.0代表視窗的最上方位置、rely=1.0代表視窗的最下方位置。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.geometry("300x100")

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

label1.place(relx=0.1, rely=0.4)
label2.place(relx=0.4, rely=0.4)
label3.place(relx=0.7, rely=0.4)

window.mainloop()
執行結果:
設定相對x/y座標
relx/rely參數和x/y參數可以同時並存,代表先決定了元件在視窗的相對位置之後,再位移x/y的距離到最後的位置。以下延續上一個範例,決定了標籤的相對位置後再往右及往下20個像素。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.geometry("300x100")

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

label1.place(relx=0.1, rely=0.4, x=20, y=20)
label2.place(relx=0.4, rely=0.4, x=20, y=20)
label3.place(relx=0.7, rely=0.4, x=20, y=20)

window.mainloop()
執行結果:
設定相對及絕對座標
順帶一提,因為是設定元件在視窗的相對位置,當視窗大小改變時,元件會隨著視窗的大小改變在視窗上的絕對位置。
元件隨視窗調整位置

relheight/relwidth參數

除了有相對位置的參數以外,也有可調整相對大小的參數,即relheight/relwidth參數。同relx/rely的原理,relheight/relwidth的參數值範圍也在0.0到1.0之間,代表了是高和寬佔整個視窗的比例。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.geometry("300x100")

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

label1.place(relx=0.1, rely=0.4, relheight=0.2, relwidth=0.2)
label2.place(relx=0.4, rely=0.4, relheight=0.3, relwidth=0.2)
label3.place(relx=0.7, rely=0.4, relheight=0.4, relwidth=0.2)

window.mainloop()
執行結果:
設定相對高度及寬度

grid()方法

grid()方法是將視窗分成格狀,依據設定不同的row和column索引值,將元件放入格子中,一個元件可使用一格或多格,索引值預設從0開始,但也可以從其它數字開始計數。
grid()版面配置

row/column參數

row/column參數可用來設定元件在格狀視窗上擺放的位置。以下範例建立三個標籤和兩個文字方塊,依據不同的row和column設定擺放。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.geometry("300x100")

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

entry1 = Entry()
entry2 = Entry()

label1.grid(row=0, column=1)
label2.grid(row=1, column=0)
label3.grid(row=2, column=0)
entry1.grid(row=1, column=1)
entry2.grid(row=2, column=1)

window.mainloop()
執行結果:
grid()視窗配置

sticky參數

當格子比元件還大時,預設會將元件放在格子的正中央,若要將元件靠某一邊對齊或延伸,便可以使用sticky參數。sticky的參數值如下:
N:對齊格子上方
S:對齊格子下方
E:對齊格子右邊
W:對齊格子左邊
在前例中,若想要使label 1對齊格子左邊可以這樣設定:
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.geometry("300x100")

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

entry1 = Entry()
entry2 = Entry()

label1.grid(row=0, column=1, sticky=W)
label2.grid(row=1, column=0)
label3.grid(row=2, column=0)

entry1.grid(row=1, column=1)
entry2.grid(row=2, column=1)

window.mainloop()
執行結果:
對齊格子左邊
若想要使label 1同時對齊左邊跟右邊,亦即延伸label 1使其占滿格子的寬度,可以這樣設定:
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.geometry("300x100")

label1 = Label(text="label 1", bg="lightyellow")
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

entry1 = Entry()
entry2 = Entry()

label1.grid(row=0, column=1, sticky=W+E)
label2.grid(row=1, column=0)
label3.grid(row=2, column=0)

entry1.grid(row=1, column=1)
entry2.grid(row=2, column=1)

window.mainloop()
執行結果:
對齊格子左邊及右邊

rowspan/columnspan參數

rowspan/columnspan參數可以合併row/column方向的格子以存放一個元件,例如在前例中,row=0的column=0和column=1可以合併,用來放置label 1,column=0的row=1和row=2可以合併,用來放置label 2,當然此時label 3就必須拿掉或移動位置,否則兩個標籤就會有重疊的可能。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.geometry("300x100")

label1 = Label(text="label 1", bg="lightyellow", width=20)
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

entry1 = Entry()
entry2 = Entry()

label1.grid(row=0, column=0, columnspan=2)
label2.grid(row=1, column=0, rowspan=2)

entry1.grid(row=1, column=1)
entry2.grid(row=2, column=1)

window.mainloop()
執行結果:
合併格子

padx/pady參數

和pack()方法的使用方式相同,padx/pady參數可設定元件和元件之間或是元件和視窗邊界之間的水平/垂直距離,單位為像素。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.geometry("300x100")

label1 = Label(text="label 1", bg="lightyellow", width=20)
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

entry1 = Entry()
entry2 = Entry()

label1.grid(row=0, column=0, columnspan=2, padx=5, pady=5)
label2.grid(row=1, column=0, padx=5, pady=5)
label3.grid(row=2, column=0, padx=5, pady=5)

entry1.grid(row=1, column=1, padx=5, pady=5)
entry2.grid(row=2, column=1, padx=5, pady=5)

window.mainloop()
執行結果:
增加外間距

ipadx/ipady參數

和pack()方法的使用方式相同,ipadx/ipady參數可設定元件內文字和元件邊界的水平/垂直距離,單位為像素。
from tkinter import *

window = Tk()
window.title("視窗元件配置")
window.geometry("300x100")

label1 = Label(text="label 1", bg="lightyellow", width=20)
label2 = Label(text="label 2", bg="yellow")
label3 = Label(text="label 3", bg="lightgreen")

entry1 = Entry()
entry2 = Entry()

label1.grid(row=0, column=0, columnspan=2, padx=5, pady=5, ipadx=1, ipady=1)
label2.grid(row=1, column=0, padx=5, pady=5, ipadx=1, ipady=1)
label3.grid(row=2, column=0, padx=5, pady=5, ipadx=1, ipady=1)

entry1.grid(row=1, column=1, padx=5, pady=5, ipadx=1, ipady=1)
entry2.grid(row=2, column=1, padx=5, pady=5, ipadx=1, ipady=1)

window.mainloop()
執行結果:
增加內間距

專題:BMI計算機

if流程控制一文中,我們使用文字介面實作了一個BMI計算機,以展示if判斷式如何應用在實際的程式設計中,一直到這裡談到了GUI程式設計,終於有種從DOS進化到了Windows的感覺,這系列的文章也算完成了一個里程碑。接下來的這段程式碼將BMI計算機改寫成圖形介面,技術或是邏輯上之前都說明過,所以僅附上程式碼以及執行結果。
from tkinter import *

# function
def bmi_button_clicked():
  # calculate BMI
  weight = int(BMI_entry_weight.get())
  height = int(BMI_entry_height.get())

  if height == 0:
    bmi = 0
  else:
    bmi = round(weight / (height / 100) ** 2, 1)

# BMI interpretation
  if bmi == 0:
    BMI_label_bmi_out.config(text=f"{bmi}")
    BMI_label_category_out.config(text="Error!")
  elif bmi < 18.5:
    BMI_label_bmi_out.config(text=f"{bmi}")
    BMI_label_category_out.config(text="Underweight")
  elif bmi < 24:
    BMI_label_bmi_out.config(text=f"{bmi}")
    BMI_label_category_out.config(text=f"Normal Weight")
  elif bmi < 28:
    BMI_label_bmi_out.config(text=f"{bmi}")
    BMI_label_category_out.config(text="Overweight")
  else:
    BMI_label_bmi_out.config(text=f"{bmi}")
    BMI_label_category_out.config(text=f"Obese")

# window
BMI_window = Tk()
BMI_window.title("BMI calculator")
BMI_window.minsize(width=300, height=200)
BMI_window.config(padx=20, pady=20)

# label
BMI_label_title = Label(width=28, text="BMI calculator", bg="lightyellow", font=("Arial", 12, "normal"))
BMI_label_title.grid(row=0, column=0, columnspan=2, ipadx=2, ipady=2)

BMI_label_height = Label(width=15, text="Height (cm)", bg="yellow", font=("Arial", 10, "normal"))
BMI_label_height.grid(row=1, column=0, padx=5, pady=5)

BMI_label_weight = Label(width=15, text="Weight (kg)", bg="lightgreen", font=("Arial", 10, "normal"))
BMI_label_weight.grid(row=2, column=0, padx=5, pady=5)

BMI_label_bmi = Label(text="BMI:", font=("Arial", 12, "bold"))
BMI_label_bmi.grid(row=4, column=0, padx=5, pady=5)

BMI_label_bmi_out = Label(font=("Arial", 12, "normal"))
BMI_label_bmi_out.grid(row=4, column=1, padx=5, pady=5)

BMI_label_category = Label(text="Category:", font=("Arial", 12, "bold"))
BMI_label_category.grid(row=5, column=0, padx=5, pady=5)

BMI_label_category_out = Label(font=("Arial", 12, "normal"))
BMI_label_category_out.grid(row=5, column=1, padx=5, pady=5)

# entry
BMI_entry_height = Entry(width=20)
BMI_entry_height.grid(row=1, column=1, padx=5, pady=5)

BMI_entry_weight = Entry(width=20)
BMI_entry_weight.grid(row=2, column=1)

# button
BMI_button = Button(width=20, text="Calculate", command=bmi_button_clicked, font=("Arial", 10, "normal"))
BMI_button.grid(row=3, column=0, columnspan=2, padx=5, pady=5)

BMI_window.mainloop()
執行結果:
BMI計算機

總結

在這篇文章中,我們介紹了三種使用tkinter模組設計GUI程式時,元件的版面配置方式,place()方法可直接定位元件的位置,但當元件一多,或是位置需要調整,座標的計算就會變得很繁瑣;pack()方法使用上最簡便,只要將元件由上(下)而下(上)或由左(右)而右(左)依序包裝起來,但使用上便少了一些彈性,無法任意指定位置;grid()算是一種折衷的方式,將視窗分成多個小格子,不用精算到座標,也可以將元件任意插入空的格子,適合用來處理較複雜的頁面。一般而言,pack()和grid()方法用到的機會是比較多的,但還是得根據程式的應用與複雜度來選擇適合的配置方式。

程式範例

為什麼會看到廣告
avatar-img
47會員
36內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Wei-Jie Weng的沙龍 的其他內容
之前的文章中介紹過了Turtle Graphics,它是架構於tkinter模組之上以實現基本圖形介面的繪圖模組,這篇文章就來說明tkinter模組常用元件(widget)的基本用法,以及如何用它來設計出一個具有圖形使用者介面(Graphical User Interface, GUI)的程式。
在上一篇的文章中,我們提到關於開啟CSV文件的方式,從單純的當作純文字文件開啟,到引入Python內建的csv模組對CSV類型的檔案做基本的讀寫操作,在這篇文章中,我們將再進一步使用Pandas這套強大的工具,來簡化CSV文件處理的流程。
CSV全名為Comma-Separated Values,中文稱為逗號分隔值,也可稱為字元分隔值,因為分隔字元也可以不是逗號。它以純文字的形式儲存表格資料,同一列的資料以逗號或其它符號分隔成不同欄位,每一列的資料間以換行符號分隔。網路上很多資料的格式都是以CSV檔案呈現,例如交通部中央氣象局的觀測資
到目前為止,我們都還是在附檔名為.py的Python檔案執行程式碼,當程式需要與外部的檔案互動,例如讀取文字、表格、或是影像來做分析,或是把程式執行的結果儲存下來,就需要能夠存取外部的檔案。例如,在上一節中,當貪食蛇遊戲結束之後,隨著程式停止執行,該次的分數也就被丟棄,若能將分數記錄下來,下次遊戲開
接續前一篇文章,說明貪食蛇遊戲架構的後半部份,來完成整個遊戲的程式設計。
接下來我們會運用之前所學過的各種觀念,包括Turtle 模組、繼承等等,來製作這個大家都熟知的小遊戲-貪食蛇。完成品會長得像下圖這樣,包括可以設定難度(速度)、使用鍵盤的上、下、左、右鍵來移動貪食蛇的移動方向來吃到食物並加長蛇身、以及記分板等。
之前的文章中介紹過了Turtle Graphics,它是架構於tkinter模組之上以實現基本圖形介面的繪圖模組,這篇文章就來說明tkinter模組常用元件(widget)的基本用法,以及如何用它來設計出一個具有圖形使用者介面(Graphical User Interface, GUI)的程式。
在上一篇的文章中,我們提到關於開啟CSV文件的方式,從單純的當作純文字文件開啟,到引入Python內建的csv模組對CSV類型的檔案做基本的讀寫操作,在這篇文章中,我們將再進一步使用Pandas這套強大的工具,來簡化CSV文件處理的流程。
CSV全名為Comma-Separated Values,中文稱為逗號分隔值,也可稱為字元分隔值,因為分隔字元也可以不是逗號。它以純文字的形式儲存表格資料,同一列的資料以逗號或其它符號分隔成不同欄位,每一列的資料間以換行符號分隔。網路上很多資料的格式都是以CSV檔案呈現,例如交通部中央氣象局的觀測資
到目前為止,我們都還是在附檔名為.py的Python檔案執行程式碼,當程式需要與外部的檔案互動,例如讀取文字、表格、或是影像來做分析,或是把程式執行的結果儲存下來,就需要能夠存取外部的檔案。例如,在上一節中,當貪食蛇遊戲結束之後,隨著程式停止執行,該次的分數也就被丟棄,若能將分數記錄下來,下次遊戲開
接續前一篇文章,說明貪食蛇遊戲架構的後半部份,來完成整個遊戲的程式設計。
接下來我們會運用之前所學過的各種觀念,包括Turtle 模組、繼承等等,來製作這個大家都熟知的小遊戲-貪食蛇。完成品會長得像下圖這樣,包括可以設定難度(速度)、使用鍵盤的上、下、左、右鍵來移動貪食蛇的移動方向來吃到食物並加長蛇身、以及記分板等。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
這個系列的教學會列出基本上所有常見的造型和一些基礎 , 讓各位可以自行搭配造型~在這個第四篇呢 , 我們會來一起了解:常見的窗口 / 框架造型定義他們的意思加了之後有什麼效果那就讓我們開始吧!
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
先前我們談論到靜態方法就像是定義工具箱一樣,那麼抽象方法就像是共用表格的概念,例如註冊帳號時會填寫的一些基本資料,就有包含制式的表格,裡面有需填寫的欄位,例如姓名,性別等。
Thumbnail
先前學到自定函式的使用方法,那如果在一個很龐大的程式架構中發散了一推自定函式,有沒有辦法可以整理一下,讓程式結構整齊又簡潔呢? 可以使用裝飾器staticmethod 定義靜態方法,全部整理到一個類別去,想像成是一個工具箱的概念,工具箱就是類別,靜態方法就像是裡面的工具一樣。
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。
Thumbnail
列表(List)和元組(Tuple)都是 Python 中用來存儲集合元素的數據結構,兩者看起來很像,在初學時很容易搞混,所以觀念要建立好。 可以把列表(List)和元組(Tuple)想像成是一個容器,什麼元素都可以塞
Thumbnail
Python 裝飾器(Decorator),它能夠讓你在不改變原始函式的情況下,增加額外的功能。本文將介紹 Python 裝飾器(Decorator)的基本概念、實現方式,並提供實際應用範例讓你更好了解Python 裝飾器。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
這個系列的教學會列出基本上所有常見的造型和一些基礎 , 讓各位可以自行搭配造型~在這個第四篇呢 , 我們會來一起了解:常見的窗口 / 框架造型定義他們的意思加了之後有什麼效果那就讓我們開始吧!
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
先前我們談論到靜態方法就像是定義工具箱一樣,那麼抽象方法就像是共用表格的概念,例如註冊帳號時會填寫的一些基本資料,就有包含制式的表格,裡面有需填寫的欄位,例如姓名,性別等。
Thumbnail
先前學到自定函式的使用方法,那如果在一個很龐大的程式架構中發散了一推自定函式,有沒有辦法可以整理一下,讓程式結構整齊又簡潔呢? 可以使用裝飾器staticmethod 定義靜態方法,全部整理到一個類別去,想像成是一個工具箱的概念,工具箱就是類別,靜態方法就像是裡面的工具一樣。
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。
Thumbnail
列表(List)和元組(Tuple)都是 Python 中用來存儲集合元素的數據結構,兩者看起來很像,在初學時很容易搞混,所以觀念要建立好。 可以把列表(List)和元組(Tuple)想像成是一個容器,什麼元素都可以塞
Thumbnail
Python 裝飾器(Decorator),它能夠讓你在不改變原始函式的情況下,增加額外的功能。本文將介紹 Python 裝飾器(Decorator)的基本概念、實現方式,並提供實際應用範例讓你更好了解Python 裝飾器。