日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python gui选择_Python之GUI的最终选择(Tkinter)

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python gui选择_Python之GUI的最终选择(Tkinter) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,Tkinter是Python默認的GUI庫,想IDLE就是用Tkinter設計出來的,因此直接導入Tkinter模塊就可以啦

1 import tkinter

(1)Tkinter初體驗:

1 import tkinter astk2

3 # 創建一個主窗口,用于容納整個GUI程序4 root =tk.Tk()5 # 設置主窗口對象的標題欄6 root.title("NEW")7 # 添加一個Label組件,Label組件是GUI程序中最常用的組件之一8 # Label組件可以顯示文本、圖標或者圖片9 # 在這里我們讓他們顯示指定文本10 theLabel = tk.Label(root, text="就是體驗一下")11 # 然后調用Label組建的pack()方法,用于自動調節組件自身的尺寸12 theLabel.pack()13 # 注意,這時候窗口還是不會顯示的...14 # 除非執行下面的這條代碼!!!!!15 root.mainloop()

顯示結果:

升級上面程序:通常如果要寫一個比較大的程序,那么應該先把代碼給封裝起來。在面向對象的編程語言中,就是封裝成類

1 import tkinter astk2

3 classApp:4 def __init__(self, root):5 # 創建一個框架,然后在里面添加一個Button按鈕組件6 # 框架一般使用于在復雜的布局中起到將組建分組的作用7 frame =tk.Frame(root)8 frame.pack()9 # 創建一個按鈕組件,fg是foreground的縮寫,就是設置前景色的意思10 self.hi_there = tk.Button(frame, text="打招呼", fg="blue", command=self.say_hi)11 self.hi_there.pack(side=tk.LEFT)12

13 def say_hi(self):14 print("互聯網的廣大朋友們大家好,我是初音未來!")15

16 # 創建一個toplevel的根窗口,并把他作為擦參數實例化APP對象17 root =tk.Tk()18 app =App(root)19 # 開始主事件循環20 root.mainloop()

顯示結果:

然后點擊打招呼后會在控制臺會輸出 "互聯網的廣大朋友們大家好,我是初音未來! " 這句話

注意:可以通過修改pack()方法的side參數,side參數可以設置LEFT,RIGHT,TOP和TOTTOM四個方位,默認設置是side=tkinter.TOP.

例如如上程序就修改了frame.pack(side=tk.LEFT)。

還有一件事!!!如果你不想按鈕挨著"墻角",可以通過設置pack()方法的padx和pady參數自定義按鈕的偏移位置

最后,就像你所看到的,按鈕既然可以設置前景色,那么就一定可以設置背景色,bg參數就是啦,他是background的縮寫

1 elf.hi_there = tk.Button(frame, text="打招呼", bg="red", fg="blue", command=self.say_hi) #此時按鈕的背景色就成了紅色

(2)Label組件(用于在界面上輸出描述的標簽,例如提示用戶...):

1 from tkinter import *

2

3 root =Tk()4 # 創建一個文本Label對象,justify函數其實就是讓下圖中的兩行文字左對齊啦5 textLabel = Label(root, text="您所下載的影片含有未成年人限制內容,\n請滿18歲后再點擊觀看!", justify=LEFT, padx=10)6 textLabel.pack(side=LEFT)7 # 創建一個圖像Label對象,注意這里只支持gif格式的圖片8 photo = PhotoImage(file="D:/python/images/02.gif")9 imgLabel = Label(root, image=photo)10 imgLabel.pack(side=RIGHT)11

12 mainloop()

顯示結果:

嗯,學完了上面的一個Labe示例后,我們想一下,我們有時候是不是需要將圖片和文字分開,例如將圖片作為背景,文字顯示在圖片的上面,只需要設置compound選項即可:

1 from tkinter import *

2

3 root =Tk()4 photo = PhotoImage(file="D:/python/images/nature.gif")5 theLabel = Label(root, text="學Python\n到FishC", justify=LEFT, image=photo, compound=CENTER, font=("幼圓", 20), fg="white")6 theLabel.pack()7

8 mainloop()

顯示結果:

(3)Button組件(就是實現一個按鈕而已):

1 from tkinter import *

2

3 def callback():4 var.set("吹吧你,我才不信嘞!")5

6 root =Tk()7 frame1 =Frame(root)8 frame2 =Frame(root)9 # 創建一個文本Label對象10 var =StringVar()11 var.set("您所下載的影片含有未成年人限制內容,\n請滿18歲后再點擊觀看!")12 textLabel = Label(frame1, textvariable=var, justify=LEFT)13 textLabel.pack(side=LEFT)14 # 創建一個圖形Label對象15 # 用PhotoImage實例化一個圖片對象(支持gif格式文件哦)16 photo = PhotoImage(file="D:/python/images/02.gif")17 imgLabel = Label(frame1, image=photo)18 imgLabel.pack(side=RIGHT)19 # 加一個按鈕20 theButton = Button(frame2, text="已滿18周歲", command=callback)21 theButton.pack()22 frame1.pack(padx=10, pady=10)23 frame2.pack(padx=10, pady=10)24

25 mainloop()

顯示結果:

當你點擊已滿18周歲按鈕后就會出現:

(4)CheckButton組件(多選):

1 from tkinter import *

2

3 root =Tk()4 GIRLS = ["西施", "王昭君", "貂蟬", "楊玉環"]5 v =[]6 for girl inGIRLS:7 v.append(IntVar())8 b = Checkbutton(root, text=girl, variable=v[-1])9 b.pack(anchor=W)10

11 mainloop()

顯示結果:

注意:為了輸出更加美觀,在這里通過設置pack()方法的anchor選項就可以實現。anchor選項是用于置頂顯示位置,可以設置為N,NE,E,SE,S,SW,W,NW,CENTER九個不同的值。

相信地理學的不錯的朋友一下子就反應過來了,他們正是東西南北的縮寫。

(5)Radiobutton(單選):

1 from tkinter import *

2

3 root =Tk()4 v =IntVar()5 Radiobutton(root, text="One", variable=v, value=1).pack(anchor=W)6 Radiobutton(root, text="Two", variable=v, value=2).pack(anchor=W)7 Radiobutton(root, text="Three", variable=v, value=3).pack(anchor=W)8

9 mainloop()

顯示結果:

那么此時問題就來了,如果你添加的選項比較多的話那么你就得重復寫Radiobutton函數,那將會是一件麻煩的事情,所以呢,循環處理將會是一個不錯的方法!

1 from tkinter import *

2

3 root =Tk()4 LANGS = [("Python", 1), ("Per1", 2), ("Ruby", 3), ("Lua", 4)]5 v =IntVar()6 v.set(1)7 for lang, num inLANGS:8 b = Radiobutton(root, text=lang, variable=v, value=num)9 b.pack(anchor=W)10

11 mainloop()

顯示結果:

注意:如果你不喜歡前面這個小圈圈,還可以改成按鈕的形式:

1 b = Radiobutton(root, text=lang, variable=v, value=num, indicatoron=False)2 b.pack(fill=X)

隨之就變成了:

(6)LabelFrame組件(自我認為就是個Frame的美化):

1 from tkinter import *

2

3 root =Tk()4 group = LabelFrame(root, text="最好的腳本語言是?", padx=5, pady=5)5 group.pack(padx=10, pady=10)6 LANGS = [("Python", 1), ("Per1", 2), ("Ruby", 3), ("Lua", 4)]7 v =IntVar()8 v.set(1)9 for lang, num inLANGS:10 b = Radiobutton(group, text=lang, variable=v, value=num)11 b.pack(anchor=W)12

13 mainloop()

顯示結果:

(7)Entry組件(就是平時所說的輸入框):

1 from tkinter import *

2

3 root =Tk()4 e =Entry(root)5 e.pack(padx=20, pady=20)6 e.delete(0, END)7 e.insert(0, "默認字體...")8

9 mainloop()

顯示結果:

獲取輸入框里邊的內容,可以使用Entry組件的get()方法。當然也可以將一個Tkinter的變量(通常是StringVar)掛鉤到textvariable選項,然后通過變量的get()方法獲取!!

下面就是一個簡單的示例:

1 from tkinter import *

2

3 root =Tk()4 # Thinker總共提供了三種布局組件的方法:pack(),grid()和place()5 # grid()方法允許你用表格的形式來管理組件的位置6 # row選項代表行,column選項代表列7 # 例如row=1,column=2表示第二行第三列(0表示第一行)8 Label(root, text="作品:").grid(row=0)9 Label(root, text="作者:").grid(row=1)10 e1 =Entry(root)11 e2 =Entry(root)12 e1.grid(row=0, column=1, padx=10, pady=5)13 e2.grid(row=1, column=1, padx=10, pady=5)14

15 def show():16 print("作品:<< % s>>" % e1.get())17 print("作者:<< % s>>" % e2.get())18 e1.delete(0, END)19 e2.delete(0, END)20

21 # 如果表格大于組件,那么可以使用sticky選項來設置組件的位置22 # 同樣你需要使用N,E,S,W以及他們的組合NE,SE,SW,NW來表示方位23 Button(root, text="獲取信息", width=10, command=show).grid(row=3, column=0, sticky=W, padx=10, pady=5)24 Button(root, text="退出", width=10, command=root.quit()).grid(row=3, column=1, sticky=E, padx=10, pady=5)25

26 mainloop()

顯示結果(輸入作品合作者后點擊獲取信息后,即可在控制臺上看到紅箭頭所之內容,然后窗口你的輸入清空):

還有一種情況那就是我們在輸密碼時候我們需要保密,所以呢我們用*代替你的密碼輸入即可,代碼如下:

1 from tkinter import *

2

3 root =Tk()4 # Thinker總共提供了三種布局組件的方法:pack(),grid()和place()5 # grid()方法允許你用表格的形式來管理組件的位置6 # row選項代表行,column選項代表列7 # 例如row=1,column=2表示第二行第三列(0表示第一行)8 Label(root, text="User:").grid(row=0)9 Label(root, text="Password:").grid(row=1)10 e1 =Entry(root)11 e2 = Entry(root, show="*")12 e1.grid(row=0, column=1, padx=10, pady=5)13 e2.grid(row=1, column=1, padx=10, pady=5)14

15 def show():16 print("User:<< % s>>" % e1.get())17 print("Password:<< % s>>" % e2.get())18 e1.delete(0, END)19 e2.delete(0, END)20

21 # 如果表格大于組件,那么可以使用sticky選項來設置組件的位置22 # 同樣你需要使用N,E,S,W以及他們的組合NE,SE,SW,NW來表示方位23 Button(root, text="芝麻開門", width=10, command=show).grid(row=3, column=0, sticky=W, padx=10, pady=5)24 Button(root, text="退出", width=10, command=root.quit()).grid(row=3, column=1, sticky=E, padx=10, pady=5)25

26 mainloop()

顯示結果:

另外,Entry組件還支持驗證輸入內容的合法性。例如輸入框要求輸入的是數字,用戶輸入了字母就屬于非法輸入。實現該功能,需要通過設置validate,validatecommand和invalidcommand三個選項。

首先啟用驗證的"開關"是validate選項,該選項可以設置的值如下表所示:

其次是為validatecommand選項指定一個驗證函數,該函數只能返回True或False表示驗證結果。一般情況下驗證函數值需要知道輸入框的內容即可,可以通過Entry組建的get()方法獲得改字符串。

1 from tkinter import *

2

3 root =Tk()4

5 def test():6 if e1.get() == "小甲魚":7 print("正確")8 returnTrue9 else:10 print("錯誤!")11 e1.delete(0, END)12 returnFalse13

14 v =StringVar()15 e1 = Entry(root, textvariable=v, validate="focusout", validatecommand=test)16 e2 =Entry(root)17 e1.pack(padx=10, pady=10)18 e2.pack(padx=10, pady=10)19

20 mainloop()

顯示結構:

(8)Listbox組件:

這個讀者可以和單選和多選那個做個比較,此組件適用于提供的選項非常多的情況

1 from tkinter import *

2

3 root =Tk()4 # 創建一個空列表5 theLB = Listbox(root, setgrid=True)6 theLB.pack()7 # 往列表里添加數據8 for item in ["籃球", "足球", "乒乓球", "羽毛球"]:9 theLB.insert(END, item)10 theButton = Button(root, text="刪除", command=lambda x=theLB: x.delete(ACTIVE))11 theButton.pack()12

13 mainloop()

顯示結果:

選擇選項后點擊刪除就可以刪除該項啦!!!!!

(9)Scrollbar組件:

首先讓我們看一個代碼:

1 root =Tk()2 # 創建一個空列表3 theLB = Listbox(root, setgrid=True)4 theLB.pack()5 # 往列表里添加數據6 for item in range(11):7 theLB.insert(END, item)8

9 mainloop()

顯示結果:

你會發現10沒了,只有當你滾動鼠標滾軸時才會出現,但是一般來說不給你提示你是不會想到滾動鼠標滾軸的哦,所以Scrollbar就誕生了

1 from tkinter import *

2

3 root =Tk()4 sb =Scrollbar(root)5 sb.pack(side=RIGHT, fill=Y)6 lb = Listbox(root, yscrollcommand=sb.set)7 for i in range(1000):8 lb.insert(END, str(i))9 lb.pack(side=LEFT, fill=BOTH)10 sb.config(command=lb.yview)11

12 mainloop()

顯示結果:

(10)Scale組件:

這個和Scrollbar類似,但是這個組件主要是通過滑塊來表示某個范圍內的一個數字的

1 from tkinter import *

2

3 root =Tk()4 Scale(root, from_=0, to=42).pack()5 Scale(root, from_=0, to=200, orient=HORIZONTAL).pack()6

7 mainloop()8

9 from tkinter import *

10

11 root =Tk()12 s1 = Scale(root, from_=0, to=42)13 s1.pack()14 s2 = Scale(root, from_=0, to=200, orient=HORIZONTAL)15 s2.pack()16

17 def show():18 print(s1.get(), s2.get())19

20 Button(root, text="獲取位置", command=show).pack()21

22 mainloop()

顯示結果:

滑動它有

控制臺耶會有相應的輸出

另一個示例:

1 from tkinter import *

2

3 root =Tk()4 Scale(root, from_=0, to=42).pack()5 Scale(root, from_=0, to=200, orient=HORIZONTAL).pack()6

7 mainloop()8

9 from tkinter import *

10

11 root =Tk()12 Scale(root, from_=0, to=42, tickinterval=5, length=200, resolution=5, orient=VERTICAL).pack()13 Scale(root, from_=0, to=200, tickinterval=10, length=600, orient=HORIZONTAL).pack()14

15 mainloop()

顯示結果:

總結

以上是生活随笔為你收集整理的python gui选择_Python之GUI的最终选择(Tkinter)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩综合色 | 视频区图片区小说区 | 亚洲一本二本 | 免费看污片网站 | 欧美顶级毛片在线播放 | 2020国产精品视频 | 91插插插插插插插 | 国产欧美精品一区二区色综合朱莉 | 黄色wwww| 亚洲男人的天堂在线观看 | 影音先锋亚洲一区 | 真实偷拍激情啪啪对白 | 天天干中文字幕 | 久久久久久久久久网 | 给我看高清的视频在线观看 | 91亚洲国产成人久久精品麻豆 | 久久中文字幕人妻 | 日本高清不卡一区 | 精品一区二区三区四区五区六区 | 日本精品专区 | 激情文学88| av毛片观看 | 床戏高潮做进去大尺度视频网站 | 他趴在我两腿中间添得好爽在线看 | 97色资源 | 国产免费无码XXXXX视频 | 日本熟妇色xxxxx日本免费看 | 亚洲成人tv| 草草影院最新网址 | 自拍偷拍麻豆 | 999久久久久久 | 国产精品免费一区二区三区都可以 | 欧美在线精品一区二区三区 | 亚洲男女视频在线观看 | 国产成人无码网站 | 性激烈视频在线观看 | 成人小视频免费观看 | 伊人www| 日本高清不卡二区 | 2021av| 91中文字日产乱幕4区 | 青青草激情视频 | 在线观看一级片 | 日韩超碰在线 | 黄金网站在线观看 | 日韩在线观看免费 | 午夜爽爽视频 | 艹男人的日日夜夜 | 国产精品福利视频 | 夜夜操天天爽 | 爱爱视频在线看 | 我们好看的2018视频在线观看 | 污污视频在线免费观看 | 亚洲国产成人91porn | 狠狠干成人 | 色图插插插 | 国产精品一区二区久久毛片 | 亚洲乱码国产乱码精品 | 久草视频在线资源 | 国产成人自拍偷拍 | 日本大乳美女 | 日韩av影视大全 | 扒开美女内裤狂揉下部 | 91精品国产高清一区二区三区蜜臀 | 91精品视频免费观看 | 日韩一级大片 | 好吊妞精品 | 亚洲精品推荐 | 免费观看成年人网站 | 床戏高潮做进去大尺度视频 | 中文亚洲字幕 | 亚洲中文字幕一区 | 日本欧美中文字幕 | 国产精品天美传媒入口 | 一本在线免费视频 | 亚洲成熟女性毛茸茸 | 中文字幕在线视频免费 | 国产一区二区精品久久 | 天堂成人在线观看 | www狠狠干| 天堂综合网 | 1024手机看片国产 | 久久五月网 | 逼逼av网站 | 999毛片 | 青青视频网 | 男人的天堂一区二区 | 欧美日韩在线精品 | 女人又爽又黄免费女仆 | 中文字幕偷拍 | 午夜在线一区二区三区 | 打白嫩屁屁网站视频短裙 | 国产一区二区三区影视 | 男女做那个的全过程 | 欧美456| 欧美一区二区三区免费 | 日本最新中文字幕 | 天天色天天爽 | 香蕉视频在线观看免费 |