2022年11月17日 星期四

Python Tkinter 主窗口控制元件(window)

 # 導入tk

from tkinter import *

# 創建一個主視窗物件

window = Tk()

# 調用mainloop()顯示主視窗

window.mainloop()



視窗常用方法

下表列出了視窗的常用方法,其中 window 代表主視窗物件:

函數

說明

window.title("my title")

接受一個字串參數,為視窗起一個標題

window.resizable()

是否允許使用者拉伸主視窗大小,預設為可更改,當設置為 resizable(0,0)或者resizable(False,False)時不可更改

window.geometry()

設定主視窗的大小以及位置,當參數值為 None 時表示獲取視窗的大小和位置資訊。

window.quit()

關閉當前窗口

window.update()

刷新當前窗口

window.mainloop()

設置視窗主迴圈,使視窗迴圈顯示(一直顯示,直到視窗被關閉)

window.iconbitmap()

設置視窗左上角的圖示(圖示是.ico檔案類型)

window.config(background ="red")

設置視窗的背景色為紅色,也可以接受 16 進制的顏色值

window.minsize(50,50)

設置視窗被允許調整的最小範圍,即寬和高各50

window.maxsize(400,400)

設置視窗被允許調整的最大範圍,即寬和高各400

window.attributes("-alpha",0.5)

用來設置視窗的一些屬性,比如透明度(-alpha)、是否置頂(-topmost)即將主屏置於其他圖示之上、是否全屏(-fullscreen)全屏顯示等

window.state("normal")

用來設置視窗的顯示狀態,參數值 normal(正常顯示),icon(最小化),zoomed(最大化),

window.withdraw()

用來隱藏主視窗,但不會銷毀視窗。

window.iconify()

設置視窗最小化

window.deiconify()

將視窗從隱藏狀態還原

window.winfo_screenwidth()
window.winfo_screenheight()

獲取電腦螢幕的解析度(尺寸)

window.winfo_width()
window.winfo_height() 

獲取視窗的大小,同樣也適用於其他控制項,但是使用前需要使用 window.update() 刷新螢幕,否則返回值為1

window.protocol("協議名",回呼函數)

啟用協定處理機制,常用協定有 WN_DELETE_WINDOW,當使用者點擊關閉視窗時,視窗不會關閉,而是觸發回呼函數。

 import tkinter as tk

window =tk.Tk()

#設置視窗title

window.title('Python Tkinter')

#設置視窗大小:寬x高,注,此處不能為 "*",必須使用 "x"

window.geometry('450x300')

# 獲取電腦螢幕的大小

print("電腦的解析度是%dx%d"%(window.winfo_screenwidth(),window.winfo_screenheight()))

# 要求視窗的大小,必須先刷新一下螢幕

window.update()

print("窗口的解析度是%dx%d"%(window.winfo_width(),window.winfo_height()))

# 如使用該函數則視窗不能被拉伸

# window.resizable(0,0)

# 改變背景顏色

window.config(background="#6fb765")

# 設置視窗處於頂層

window.attributes('-topmost',True)

# 設置視窗的透明度

window.attributes('-alpha',1)

# 設置視窗被允許最大調整的範圍,與resizble()衝突

window.maxsize(600,600)

# 設置視窗被允許最小調整的範圍,與resizble()衝突

window.minsize(50,50)

#更改左上角視窗的的icon圖示,載入C語言中文網logo標

window.iconbitmap('tsmc.ico')

#添加文本內容,並對字體添加相應的格式 font(字體,字型大小,"字體類型")

text=tk.Label(window,text="alex9uo Python,網址:https://alex9ufoexploer.blogspot.com/",bg="yellow",fg="red",font=('Times', 15, 'bold italic underline'))

#將文本內容放置在主視窗內

text.pack()


# 添加按鈕,以及按鈕的文本,並通過command 參數設置關閉視窗的功能

button=tk.Button(window,text="關閉",command=window.quit)

# 將按鈕放置在主視窗內

button.pack(side="bottom")

#進入主迴圈,顯示主視窗

window.mainloop()


from tkinter import Tk

# 導入 對話方塊控制項

from tkinter import messagebox

# 創建主窗口

# 定義回呼函數,當使用者點擊視窗x退出時,執行使用者自訂的函數

def QueryWindow():# 顯示一個警告資訊,點擊確後,銷毀視窗

    if messagebox.showwarning("警告","出現了一個錯誤"):

        # 這裡必須使用 destory()關閉視窗

        root.destroy() # 这里必须使用 destory()关闭窗口


root = Tk()

   

# 使用協定機制與視窗交互,並回檔使用者自訂的函數

root.protocol('WM_DELETE_WINDOW', QueryWindow)

root.mainloop()



import tkinter as tk

# 定義窗口

window = tk.Tk()

window.title('alex9ufo Python')

window.geometry('300x300')

window.iconbitmap('t1.ico')

# 定義回呼函數

def callback():

    print("執行回呼函數","https://alex9ufoexploer.blogspot.com/歡迎您")


# 點擊執行按鈕

button = tk.Button(window, text="執行", command=callback)

button.pack()

window.mainloop()


>>> %Run L1-04.py

執行回呼函數 https://alex9ufoexploer.blogspot.com/歡迎您

import tkinter as tk


window = tk.Tk()

window.title('alex9ufo Python')

window.iconbitmap('TSMC.ico')

# 设置窗口大小变量

width = 300

height = 300

# 窗口居中,获取屏幕尺寸以计算布局参数,使窗口居屏幕中央

screenwidth = window.winfo_screenwidth()

screenheight = window.winfo_screenheight()

size_geo = '%dx%d+%d+%d' % (width, height, (screenwidth-width)/2, (screenheight-height)/2)

window.geometry(size_geo)

window.mainloop()




沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...