最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用Tkinter進(jìn)行窗口的管理與設(shè)置

 更新時(shí)間:2021年06月30日 11:31:17   投稿:zhanglei  
Tkinter是Python的標(biāo)準(zhǔn)GUI庫,它實(shí)際是建立在Tk技術(shù)上的。在大多數(shù)Unix平臺以及Windows系統(tǒng)上都可用

一、Tkinter介紹

作為 python 特定的GUI界面,是一個(gè)圖像的窗口,tkinter是python 自帶的,可以編輯的GUI界面,我們可以用GUI 實(shí)現(xiàn)很多直觀的功能,比如想開發(fā)一個(gè)計(jì)算器,如果只是一個(gè)鍵盤輸入,輸出的黑色窗口,是沒用用戶體驗(yàn)的。所有開發(fā)一個(gè)圖像化的小窗口,就是必要的。

對于稍有GUI編程經(jīng)驗(yàn)的人來說,Python的Tkinter界面庫是非常簡單的。python的GUI庫非常多,選擇Tkinter,一是最為簡單,二是自帶庫,不需下載安裝,隨時(shí)使用,三則是從需求出發(fā),Python作為一種腳本語言,或者說一種膠水語言,一般不會用它來開發(fā)復(fù)雜的桌面應(yīng)用,它并不具備這方面的優(yōu)勢,使用Python,可以把它作為一個(gè)靈活的工具,而不是作為主要開發(fā)語言,那么在工作中,需要制作一個(gè)小工具,肯定是需要有界面的,不僅自己用,也能分享別人使用,在這種需求下,Tkinter是足夠勝任的!

Tkinter是Python默認(rèn)的GUI庫,像IDLE就是用Tkinter設(shè)計(jì)出來的,因此直接導(dǎo)入Tkinter模塊就可以了:

import tkinter

二、Tkinter之初體驗(yàn)

接下來從最簡單的例子入手:

import tkinter as tk

# 創(chuàng)建一個(gè)主窗口,用于容納整個(gè)GUI程序
root = tk.Tk()
# 設(shè)置主窗口對象的標(biāo)題欄
root.title("First Demo")
# 設(shè)置窗口大小
root.geometry('500x300+100+100')
# 添加一個(gè)Label組件,Label組件是GUI程序中最常用的組件之一。
# Label組件可以顯示文本、圖標(biāo)或者圖片
# 在這里我們讓它顯示指定文本
theLabel = tk.Label(root, text="我的第一個(gè)tkinter窗口!")
# 然后調(diào)用Label組件的pack()方法,用于自動調(diào)節(jié)組件自身的尺寸
theLabel.pack()
# 注意,這時(shí)候窗口還是不會顯示的…
# 除非執(zhí)行下面這條代碼!
root.mainloop()

執(zhí)行程序,如圖所示。

loop因?yàn)槭茄h(huán)的意思,root.mainloop就會讓root不斷的刷新,如果沒有mainloop,就是一個(gè)靜態(tài)的root,傳入進(jìn)去的值就不會有循環(huán),mainloop就相當(dāng)于一個(gè)很大的while循環(huán),有個(gè)while,每點(diǎn)擊一次就會更新一次,所以我們必須要有循環(huán)。
所有的窗口文件都必須有類似的mainloop函數(shù),mainloop是窗口文件的關(guān)鍵的關(guān)鍵。

意思是一旦進(jìn)入了主事件循環(huán),就由Tkinter掌管一切了?,F(xiàn)在不理解沒關(guān)系,在后面的學(xué)習(xí)中你會有深刻的體會。GUI程序的開發(fā)與以往的開發(fā)經(jīng)驗(yàn)會有截然不同的感受。

通常如果要寫一個(gè)比較大的程序,那么應(yīng)該先把代碼給封裝起來。在面向?qū)ο蟮木幊陶Z言中,就是封裝成類??聪旅孢M(jìn)階版的例子:

import tkinter as tk


def create_button(root):
    # 創(chuàng)建一個(gè)按鈕組件
    # fg 是 foreground 的縮寫, 就是設(shè)置前景色的意思
    say_hello = tk.Button(root, text='打招呼', fg='blue', command=eat)
    say_hello.pack()
    return root


def eat():
    print('今天你吃飯了嗎?')


root = tk.Tk()
app = create_button(root)

root.mainloop()

程序跑起來后出現(xiàn)一個(gè)“打招呼”按鈕,單擊它就能從IDLE接收到回饋信息,如圖15-3所示。

三、窗口的管理與設(shè)置

不知道大家是否注意到了,上述舉例的簡單demo程序存在窗口顯示混亂的情況,這樣的一個(gè)界面顯然是不符合我們要求的。所以我們首先要開始學(xué)習(xí)如何使用tkinter去控制我們的窗口

3.1、基本屬性設(shè)置

1.添加標(biāo)題

# 設(shè)置窗口標(biāo)題
root.title("title")

2.添加圖標(biāo)

#  設(shè)置圖標(biāo),以O(shè)neDrive圖標(biāo)為例,必須是以 .ico 為后綴的圖標(biāo)文件,放于同目錄下。
root.iconbitmap("OneDrive.ico")

3.設(shè)置背景

#  設(shè)置背景色,可以用英文名,也可以用十六進(jìn)制表示的顏色。
root["background"] = "#00ffff"

完整代碼

#  導(dǎo)入模塊,取別名
import tkinter as tk
#  實(shí)例化一個(gè)窗體對象
root = tk.Tk()
#  設(shè)置窗口的大小長寬為300x300出現(xiàn)的位置距離窗口左上角+150+150
root.geometry("300x300+150+150")
#  設(shè)置窗口標(biāo)題
root.title("title")
#  設(shè)置圖標(biāo),以O(shè)neDrive圖標(biāo)為例,必須是以 .ico 為后綴的圖標(biāo)文件,放于同目錄下。
root.iconbitmap("OneDrive.ico")
#  設(shè)置背景色,可以用英文名,也可以用十六進(jìn)制表示的顏色。
root["background"] = "#00ffff"
#  進(jìn)入消息循環(huán),顯示窗口
root.mainloop()

效果演示

3.2、外形設(shè)置

1.設(shè)置透明度

#  透明度的值:0~1 也可以是小數(shù)點(diǎn),0:全透明;1:全不透明
root.attributes("-alpha", 0.6)

2.設(shè)置工具欄樣式

#  True 只有退出按鈕,也沒有圖標(biāo);False 正常的窗體樣式
root.attributes("-toolwindow", True)

效果演示

3.設(shè)置全屏

#  True 全屏;False 正常顯示
root.attributes("-fullscreen", True)

4.窗口置頂

#  True 所有窗口中處于最頂層;False 正常顯示 兩個(gè)同時(shí)被置頂?shù)拇翱跒橥?能互相遮蓋),但他們都能同時(shí)遮蓋住沒有被設(shè)置為置頂?shù)拇翱凇?
root.attributes("-topmost", True)

5.設(shè)置成脫離工具欄

#  True 沒有工具欄按鈕;False 正常顯示
root.overrideredirect(True)

完整代碼

#  導(dǎo)入模塊,取別名
import tkinter as tk
#  實(shí)例化一個(gè)窗體對象
root = tk.Tk()
#  設(shè)置窗口的大小長寬為300x300出現(xiàn)的位置距離窗口左上角+150+150
root.geometry("300x300+150+150")
#  設(shè)置窗口標(biāo)題
root.title("title")
#  設(shè)置圖標(biāo),以O(shè)neDrive圖標(biāo)為例,必須是以 .ico 為后綴的圖標(biāo)文件,放于同目錄下。
root.iconbitmap("OneDrive.ico")
#  設(shè)置背景色,可以用英文名,也可以用十六進(jìn)制表示的顏色。
root["background"] = "#00ffff"
#  True 全屏;False 正常顯示
root.attributes("-fullscreen", True)
#  True 所有窗口中處于最頂層;False 正常顯示 兩個(gè)同時(shí)被置頂?shù)拇翱跒橥?能互相遮蓋),但他們都能同時(shí)遮蓋住沒有被設(shè)置為置頂?shù)拇翱凇?
root.attributes("-topmost", True)
#  True 沒有工具欄按鈕;False 正常顯示
root.overrideredirect(True)
#  進(jìn)入消息循環(huán),顯示窗口
root.mainloop()

3.3、窗體的方法

1.獲取屏幕大小

screenheight = root.winfo_screenheight()
screenwidth = root.winfo_screenwidth()

完整代碼

#  導(dǎo)入模塊,取別名
import tkinter as tk
#  實(shí)例化一個(gè)窗體對象
root = tk.Tk()
#  獲取屏幕大小
screenheight = root.winfo_screenheight()
screenwidth = root.winfo_screenwidth()
print("屏幕高度:", screenheight)
print("屏幕寬度:", screenwidth)
rootwidth = 300
roothight = 300
#  設(shè)置窗口在屏幕居中
root.geometry("%dx%d+%d+%d" % (rootwidth, roothight, (screenwidth-rootwidth)/2, (screenheight-roothight)/2))
#  進(jìn)入消息循環(huán),顯示窗口
root.mainloop()

演示效果

2.獲取窗體位置

root_x = root.winfo_x()
root_y = root.winfo_y()

3.獲取窗體大小

root_height = root.winfo_height()
root_width = root.winfo_width()

完整代碼

#  導(dǎo)入模塊,取別名
import tkinter as tk
#  實(shí)例化一個(gè)窗體對象
root = tk.Tk()
#  設(shè)置窗體高寬和位置
root.geometry("600x500+150+150")
#  更新窗體
root.update()
#  獲取窗體位置
root_x = root.winfo_x()
root_y = root.winfo_y()
#  獲取窗體大小
root_height = root.winfo_height()
root_width = root.winfo_width()
#  輸出窗體位置和窗體高寬
print(root_x)
print(root_y)
print(root_width)
print(root_y)
#  進(jìn)入消息循環(huán),顯示窗口
root.mainloop()

演示效果

以上就是如何使用Tkinter進(jìn)行窗口的管理與設(shè)置的詳細(xì)內(nèi)容,更多關(guān)于Tkinter 窗口的管理與設(shè)置的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • jupyter notebook 的工作空間設(shè)置操作

    jupyter notebook 的工作空間設(shè)置操作

    這篇文章主要介紹了jupyter notebook 的工作空間設(shè)置操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python采集貓眼兩萬條數(shù)據(jù) 對《無名之輩》影評進(jìn)行分析

    Python采集貓眼兩萬條數(shù)據(jù) 對《無名之輩》影評進(jìn)行分析

    這篇文章主要給大家介紹了關(guān)于利用Python榮國采集兩萬條貓眼數(shù)據(jù),對《無名之輩》影評進(jìn)行分析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • django orm模糊查詢、正則匹配多個(gè)值方式

    django orm模糊查詢、正則匹配多個(gè)值方式

    這篇文章主要介紹了django orm模糊查詢、正則匹配多個(gè)值方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • pandas對齊運(yùn)算的實(shí)現(xiàn)示例

    pandas對齊運(yùn)算的實(shí)現(xiàn)示例

    本文主要介紹了pandas對齊運(yùn)算的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Python高效編程技巧

    Python高效編程技巧

    我已經(jīng)使用Python編程有多年了,即使今天我仍然驚奇于這種語言所能讓代碼表現(xiàn)出的整潔和對DRY編程原則的適用。這些年來的經(jīng)歷讓我學(xué)到了很多的小技巧和知識,大多數(shù)是通過閱讀很流行的開源軟件,如Django, Flask, Requests中獲得的
    2013-01-01
  • Python實(shí)現(xiàn)發(fā)送email的幾種常用方法

    Python實(shí)現(xiàn)發(fā)送email的幾種常用方法

    這篇文章主要介紹了Python實(shí)現(xiàn)發(fā)送email的幾種常用方法,非常實(shí)用,需要的朋友可以參考下
    2014-08-08
  • python uvloop事件循環(huán)庫使用功能示例探究

    python uvloop事件循環(huán)庫使用功能示例探究

    這篇文章主要為大家介紹了python uvloop事件循環(huán)庫使用功能示例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Python工程師面試題 與Python基礎(chǔ)語法相關(guān)

    Python工程師面試題 與Python基礎(chǔ)語法相關(guān)

    這篇文章主要為大家分享了Python工程師面試題,面試題的內(nèi)容主要與Python基礎(chǔ)語法相關(guān),感興趣的小伙伴們可以參考一下
    2016-01-01
  • 一文詳解python pickle中的反序列化漏洞

    一文詳解python pickle中的反序列化漏洞

    在Python里,常用的模塊之一就是Pickle,它可以幫我們很方便地進(jìn)行序列化和反序列化操作,,今天我們來聊聊Python里的反序列化攻擊,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Python實(shí)現(xiàn)基于Fasttext的商品評論數(shù)據(jù)分類的操作流程

    Python實(shí)現(xiàn)基于Fasttext的商品評論數(shù)據(jù)分類的操作流程

    這篇文章主要介紹了Python實(shí)現(xiàn)基于Fasttext的商品評論數(shù)據(jù)分類,今天使用的fasttext更像是一個(gè)集成的庫,把向量化和分類一起做掉了,這個(gè)對于使用層面來講就更方便了一些,需要的朋友可以參考下
    2022-06-06

最新評論

娱乐| 商都县| 平安县| 来安县| 大英县| 阿图什市| 台中市| 灵寿县| 桂林市| 儋州市| 建水县| 高要市| 若尔盖县| 修武县| 海门市| 图木舒克市| 云南省| 湘潭市| 平谷区| 崇州市| 巢湖市| 元江| 鹿邑县| 福鼎市| 西林县| 柏乡县| 永寿县| 宝山区| 马龙县| 丰原市| 修文县| 东乡族自治县| 墨玉县| 论坛| 枣庄市| 剑川县| 文登市| 三明市| 灵川县| 朔州市| 禄劝|