本篇文章給大家談?wù)刾ython怎么做gui界面,以及python gui界面設(shè)計(jì),希望對(duì)各位有所幫助,不要忘了收藏本站喔。
開(kāi)發(fā)圖形用戶(hù)界面(GUI)應(yīng)用程序是Python的重要應(yīng)用之一,標(biāo)準(zhǔn)庫(kù)tkinter用來(lái)實(shí)現(xiàn)圖形用戶(hù)界面。
tkinter模塊是Python事實(shí)上的GUI庫(kù),包含在Python的基本安裝包中Python自動(dòng)化運(yùn)維:提高效率與降低成本的關(guān)鍵。
使用tkinter模塊編寫(xiě)的GUI程序是跨平臺(tái)的,可在多種操作系統(tǒng)中運(yùn)行。
第一個(gè)tkinter GUI程序
組件和容器是GUI編程的兩個(gè)基本概念。
● 組件是指標(biāo)簽、按鈕、列表框等對(duì)象,需將其放在容器中顯示。
● 容器是指可放置其他組件或容器的對(duì)象。
#帶有標(biāo)簽和按鈕的tkinter GUI程序
import tkinter #導(dǎo)入tkinter模塊
win=tkinter.Tk() #創(chuàng)建主窗口對(duì)象
label1=tkinter.Label(win,text="Hello,Python") #創(chuàng)建標(biāo)簽對(duì)象
btn1=tkinter.Button(win,text='click') #創(chuàng)建按鈕對(duì)象
label1.pack() #打包對(duì)象 使其顯示在其父容器中
btn1.pack()
win.mainloop() #啟動(dòng)事件循環(huán)
?
?tkinter GUI編程步驟
(1)導(dǎo)入tkinter模塊。import tkinter 或 ?from tkinter import *
(2)創(chuàng)建主窗口對(duì)象,如果未創(chuàng)建主窗口對(duì)象,tkinter將以默認(rèn)的頂層窗口作為主窗口。
(3)創(chuàng)建標(biāo)簽、按鈕、輸入文本框等組件對(duì)象。
(4)打包組件,將組件顯示在其父容器中。
(5)啟動(dòng)事件循環(huán),GUI窗口啟動(dòng),等待響應(yīng)用戶(hù)操作。
import tkinter
from tkinter import*
設(shè)置窗口和組件的屬性
設(shè)置窗口屬性常用的方法有title()、geometry()和config()方法。
1. title()方法和geometry()方法
title()方法用于設(shè)置窗口的標(biāo)題,geometry()用于方法設(shè)置窗口的大小。
geometry()方法中的參數(shù)格式為“寬度x高度” 。?
#設(shè)置窗口標(biāo)題和大小
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
label1=Label(win,text="Hello,Python") #創(chuàng)建標(biāo)簽對(duì)象
btn1=Button(win,text='click') #創(chuàng)建按鈕對(duì)象
label1.pack() #打包對(duì)象 使其顯示在其父容器中
btn1.pack()
win.title("設(shè)置窗口標(biāo)題和大小") # title()方法設(shè)置窗口標(biāo)題
win.geometry("300x200") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
2. config()方法
config()方法用于設(shè)置組件文本、對(duì)齊方式、前景色、背景色、字體等屬性。
#使用config()方法設(shè)置組件屬性
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
label=Label() #創(chuàng)建標(biāo)簽對(duì)象
label.config(text="Hello Python") #設(shè)置文本屬性
label.config(fg="white",bg="blue") #設(shè)置前景和背景屬性
label.pack() #打包對(duì)象 使其顯示在其父容器中
btn1=Button() #創(chuàng)建按鈕對(duì)象
btn1["text"]="click"
btn1.pack()
win.title("設(shè)置組件屬性") # title()方法設(shè)置窗口標(biāo)題
win.geometry("300x200") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
?tkinter GUI的布局管理
● 容器中組件的布局是很繁瑣的,需要調(diào)整組件自身的大小,還要設(shè)計(jì)和其他組件的相對(duì)位置。
● 實(shí)現(xiàn)組件布局的方法被稱(chēng)為布局管理器或幾何管理器。
● tkinter使用三種方法來(lái)實(shí)現(xiàn)布局:pack()、grid()、place(),。
● Frame作為中間層的容器組件,可以分組管理組件,實(shí)現(xiàn)復(fù)雜的布局。
使用pack()方法的布局
pack()方法以塊的方式布局組件。
pack()方法將組件顯示在默認(rèn)位置,是最簡(jiǎn)單、直接的用法。
pack()方法的參數(shù):
side表示組件在容器中的位置;
? ? ?· expand表示組件可拉伸;
? ? ?· fill取值為X、Y或BOTH,填充X或Y方向上的空間;
? ? ?· anchor表示組件在窗口中位置。?
#使用pack()方法的side參數(shù)設(shè)置組件的布局
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
label1=Label(win,text="Top標(biāo)簽",fg="white",bg="blue") #創(chuàng)建標(biāo)簽對(duì)象
label2=Label(win,text="Left標(biāo)簽",fg="white",bg="blue")
label3=Label(win,text="Bottom標(biāo)簽",fg="white",bg="blue")
label4=Label(win,text="Right標(biāo)簽",fg="white",bg="blue")
label1.pack(side=TOP) #打包對(duì)象 使其顯示在其父容器中
label2.pack(side=LEFT)
label3.pack(side=BOTTOM)
label4.pack(side=RIGHT)
win.title("pack()方法") # title()方法設(shè)置窗口標(biāo)題
win.geometry("200x150") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
?
#使用pack()方法的anchor參數(shù)設(shè)置組件的布局
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
label1=Label(win,text="標(biāo)簽標(biāo)題",fg="white",bg="blue") #創(chuàng)建標(biāo)簽對(duì)象
label1.pack(anchor=NW,padx=5)
label2=Label(win)
label2.config(text="標(biāo)簽內(nèi)容",fg="white",bg="grey")
label2.pack(expand=YES,fill=BOTH,padx=5)
btn=Button()
btn["text"]="click"
btn.pack() #打包對(duì)象
win.title("anchor參數(shù)設(shè)置") # title()方法設(shè)置窗口標(biāo)題
win.geometry("300x200") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
使用grid()方法的布局
使用grid()方法的布局被稱(chēng)為網(wǎng)格布局,它按照二維表格的形式,將容器劃分為若干行和列,組件的位置由行列所在位置確定。
在同一容器中,只能使用pack()方法或grid()方法中的一種布局方式。
grid()方法的參數(shù):
? ?· row和column,組件所在的行和列的位置
? ?· rowspan和columnspan,組件從所在位置起跨的行數(shù)和跨的列數(shù)
? ?· sticky,組件所在位置的對(duì)齊方式
#使用grid()方法設(shè)置組件的布局
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
label1=Label(win,text="請(qǐng)選擇下列操作",fg="green") #創(chuàng)建標(biāo)簽對(duì)象
label1.grid(row=0,column=0,columnspan=4)
btn1=Button(text="copy")
btn2=Button(text="cut")
btn3=Button(text="paste")
btn4=Button(text="delete")
btn1.grid(row=2,column=0,padx=2)
btn2.grid(row=2,column=1,padx=2)
btn3.grid(row=2,column=2,padx=2)
btn4.grid(row=2,column=3,padx=2)
win.title("grid()方法設(shè)置") # title()方法設(shè)置窗口標(biāo)題
win.geometry("200x150") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
?使用place()方法的布局
比grid()和pack()布局更精確地控制組件在容器中的位置。
如果容器大小調(diào)整,可能會(huì)出現(xiàn)布局不適應(yīng)的情況。
place()方法的參數(shù)
? ?· x和y,用絕對(duì)坐標(biāo)指定組件的位置
? ?· height和width,指定組件的高度和寬度
? ?· relx和rely,按容器高度和寬度的比例來(lái)指定組件的位置
? ?· relheight和relwidth,按容器高度和寬度的比例來(lái)指定組件的高度和寬度
#使用place()方法設(shè)置組件的布局
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
label1=Label(win,text="place()方法測(cè)試",fg="green") #創(chuàng)建標(biāo)簽對(duì)象
label1.place(x=140,y=50,anchor=N)
btn1=Button(text="place()按鈕")
btn1.place(x=140,y=80,anchor=N)
btn2=Button(text="grid()按鈕")
btn2.grid(row=2,column=1)
win.title("place()方法設(shè)置") # title()方法設(shè)置窗口標(biāo)題
win.geometry("200x150") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
使用框架的復(fù)雜布局
框架( Frame)是一個(gè)容器組件,通常用于對(duì)組件進(jìn)行分組
可以從而實(shí)現(xiàn)復(fù)雜的布局。
?· bd? ? ? ? ? ? ? ? ? ? ? 指定邊框?qū)挾?br> ?· relief? ? ? ? ? ? ? ? ? 指定邊框樣式,取值為FLAT(扁平,默認(rèn)值) 、RAISED(凸起)、 SUNKEN(凹? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 陷)、RIDGE(脊?fàn)?、GROOVE(凹槽)和 SOLID(實(shí)線)
?· width和height?? ?設(shè)置寬度或高度,如果忽略,容器通常根據(jù)內(nèi)容組件的大小調(diào)整Frame大小文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-851299.html
#使用Frame實(shí)現(xiàn)復(fù)雜布局
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
frma=Frame() #框架frma
frmb=Frame() #框架frmb
frma.pack()
frmb.pack()
#添加兩個(gè)標(biāo)簽和兩個(gè)輸入框
lblUname=Label(frma,text="UserName",width=10,fg="black")
etyUname=Entry(frma,width=20)
lblUname.grid(row=1,column=1)
etyUname.grid(row=1,column=2)
lblPwd=Label(frma,text="PassWord",width=10,fg="black")
etyPwd=Entry(frma,width=20)
lblPwd.grid(row=2,column=1)
etyPwd.grid(row=2,column=2)
#向容器中添加兩個(gè)按鈕
btnRest=Button(frmb,text="ReSet",width=10)
btnSubmit=Button(frmb,text="Submit",width=10)
btnRest.grid(row=1,column=1)
btnSubmit.grid(row=1,column=2)
win.title("Frame實(shí)現(xiàn)復(fù)雜布局") # title()方法設(shè)置窗口標(biāo)題
win.geometry("300x150") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-851299.html
開(kāi)發(fā)圖形用戶(hù)界面(GUI)應(yīng)用程序是Python的重要應(yīng)用之一,標(biāo)準(zhǔn)庫(kù)tkinter用來(lái)實(shí)現(xiàn)圖形用戶(hù)界面。
tkinter模塊是Python事實(shí)上的GUI庫(kù),包含在Python的基本安裝包中Python自動(dòng)化運(yùn)維:提高效率與降低成本的關(guān)鍵。
使用tkinter模塊編寫(xiě)的GUI程序是跨平臺(tái)的,可在多種操作系統(tǒng)中運(yùn)行。
第一個(gè)tkinter GUI程序
組件和容器是GUI編程的兩個(gè)基本概念。
● 組件是指標(biāo)簽、按鈕、列表框等對(duì)象,需將其放在容器中顯示。
● 容器是指可放置其他組件或容器的對(duì)象。
#帶有標(biāo)簽和按鈕的tkinter GUI程序
import tkinter #導(dǎo)入tkinter模塊
win=tkinter.Tk() #創(chuàng)建主窗口對(duì)象
label1=tkinter.Label(win,text="Hello,Python") #創(chuàng)建標(biāo)簽對(duì)象
btn1=tkinter.Button(win,text='click') #創(chuàng)建按鈕對(duì)象
label1.pack() #打包對(duì)象 使其顯示在其父容器中
btn1.pack()
win.mainloop() #啟動(dòng)事件循環(huán)
?
?tkinter GUI編程步驟
(1)導(dǎo)入tkinter模塊。import tkinter 或 ?from tkinter import *
(2)創(chuàng)建主窗口對(duì)象,如果未創(chuàng)建主窗口對(duì)象,tkinter將以默認(rèn)的頂層窗口作為主窗口。
(3)創(chuàng)建標(biāo)簽、按鈕、輸入文本框等組件對(duì)象。
(4)打包組件,將組件顯示在其父容器中。
(5)啟動(dòng)事件循環(huán),GUI窗口啟動(dòng),等待響應(yīng)用戶(hù)操作。
import tkinter
from tkinter import*
設(shè)置窗口和組件的屬性
設(shè)置窗口屬性常用的方法有title()、geometry()和config()方法。
1. title()方法和geometry()方法
title()方法用于設(shè)置窗口的標(biāo)題,geometry()用于方法設(shè)置窗口的大小。
geometry()方法中的參數(shù)格式為“寬度x高度” 。?
#設(shè)置窗口標(biāo)題和大小
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
label1=Label(win,text="Hello,Python") #創(chuàng)建標(biāo)簽對(duì)象
btn1=Button(win,text='click') #創(chuàng)建按鈕對(duì)象
label1.pack() #打包對(duì)象 使其顯示在其父容器中
btn1.pack()
win.title("設(shè)置窗口標(biāo)題和大小") # title()方法設(shè)置窗口標(biāo)題
win.geometry("300x200") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
2. config()方法
config()方法用于設(shè)置組件文本、對(duì)齊方式、前景色、背景色、字體等屬性。
#使用config()方法設(shè)置組件屬性
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
label=Label() #創(chuàng)建標(biāo)簽對(duì)象
label.config(text="Hello Python") #設(shè)置文本屬性
label.config(fg="white",bg="blue") #設(shè)置前景和背景屬性
label.pack() #打包對(duì)象 使其顯示在其父容器中
btn1=Button() #創(chuàng)建按鈕對(duì)象
btn1["text"]="click"
btn1.pack()
win.title("設(shè)置組件屬性") # title()方法設(shè)置窗口標(biāo)題
win.geometry("300x200") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
?tkinter GUI的布局管理
● 容器中組件的布局是很繁瑣的,需要調(diào)整組件自身的大小,還要設(shè)計(jì)和其他組件的相對(duì)位置。
● 實(shí)現(xiàn)組件布局的方法被稱(chēng)為布局管理器或幾何管理器。
● tkinter使用三種方法來(lái)實(shí)現(xiàn)布局:pack()、grid()、place(),。
● Frame作為中間層的容器組件,可以分組管理組件,實(shí)現(xiàn)復(fù)雜的布局。
使用pack()方法的布局
pack()方法以塊的方式布局組件。
pack()方法將組件顯示在默認(rèn)位置,是最簡(jiǎn)單、直接的用法。
pack()方法的參數(shù):
side表示組件在容器中的位置;
? ? ?· expand表示組件可拉伸;
? ? ?· fill取值為X、Y或BOTH,填充X或Y方向上的空間;
? ? ?· anchor表示組件在窗口中位置。?
#使用pack()方法的side參數(shù)設(shè)置組件的布局
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
label1=Label(win,text="Top標(biāo)簽",fg="white",bg="blue") #創(chuàng)建標(biāo)簽對(duì)象
label2=Label(win,text="Left標(biāo)簽",fg="white",bg="blue")
label3=Label(win,text="Bottom標(biāo)簽",fg="white",bg="blue")
label4=Label(win,text="Right標(biāo)簽",fg="white",bg="blue")
label1.pack(side=TOP) #打包對(duì)象 使其顯示在其父容器中
label2.pack(side=LEFT)
label3.pack(side=BOTTOM)
label4.pack(side=RIGHT)
win.title("pack()方法") # title()方法設(shè)置窗口標(biāo)題
win.geometry("200x150") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
?
#使用pack()方法的anchor參數(shù)設(shè)置組件的布局
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
label1=Label(win,text="標(biāo)簽標(biāo)題",fg="white",bg="blue") #創(chuàng)建標(biāo)簽對(duì)象
label1.pack(anchor=NW,padx=5)
label2=Label(win)
label2.config(text="標(biāo)簽內(nèi)容",fg="white",bg="grey")
label2.pack(expand=YES,fill=BOTH,padx=5)
btn=Button()
btn["text"]="click"
btn.pack() #打包對(duì)象
win.title("anchor參數(shù)設(shè)置") # title()方法設(shè)置窗口標(biāo)題
win.geometry("300x200") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
使用grid()方法的布局
使用grid()方法的布局被稱(chēng)為網(wǎng)格布局,它按照二維表格的形式,將容器劃分為若干行和列,組件的位置由行列所在位置確定。
在同一容器中,只能使用pack()方法或grid()方法中的一種布局方式。
grid()方法的參數(shù):
? ?· row和column,組件所在的行和列的位置
? ?· rowspan和columnspan,組件從所在位置起跨的行數(shù)和跨的列數(shù)
? ?· sticky,組件所在位置的對(duì)齊方式
#使用grid()方法設(shè)置組件的布局
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
label1=Label(win,text="請(qǐng)選擇下列操作",fg="green") #創(chuàng)建標(biāo)簽對(duì)象
label1.grid(row=0,column=0,columnspan=4)
btn1=Button(text="copy")
btn2=Button(text="cut")
btn3=Button(text="paste")
btn4=Button(text="delete")
btn1.grid(row=2,column=0,padx=2)
btn2.grid(row=2,column=1,padx=2)
btn3.grid(row=2,column=2,padx=2)
btn4.grid(row=2,column=3,padx=2)
win.title("grid()方法設(shè)置") # title()方法設(shè)置窗口標(biāo)題
win.geometry("200x150") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
?使用place()方法的布局
比grid()和pack()布局更精確地控制組件在容器中的位置。
如果容器大小調(diào)整,可能會(huì)出現(xiàn)布局不適應(yīng)的情況。
place()方法的參數(shù)
? ?· x和y,用絕對(duì)坐標(biāo)指定組件的位置
? ?· height和width,指定組件的高度和寬度
? ?· relx和rely,按容器高度和寬度的比例來(lái)指定組件的位置
? ?· relheight和relwidth,按容器高度和寬度的比例來(lái)指定組件的高度和寬度
#使用place()方法設(shè)置組件的布局
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
label1=Label(win,text="place()方法測(cè)試",fg="green") #創(chuàng)建標(biāo)簽對(duì)象
label1.place(x=140,y=50,anchor=N)
btn1=Button(text="place()按鈕")
btn1.place(x=140,y=80,anchor=N)
btn2=Button(text="grid()按鈕")
btn2.grid(row=2,column=1)
win.title("place()方法設(shè)置") # title()方法設(shè)置窗口標(biāo)題
win.geometry("200x150") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
使用框架的復(fù)雜布局
框架( Frame)是一個(gè)容器組件,通常用于對(duì)組件進(jìn)行分組
可以從而實(shí)現(xiàn)復(fù)雜的布局。
?· bd? ? ? ? ? ? ? ? ? ? ? 指定邊框?qū)挾?br> ?· relief? ? ? ? ? ? ? ? ? 指定邊框樣式,取值為FLAT(扁平,默認(rèn)值) 、RAISED(凸起)、 SUNKEN(凹? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 陷)、RIDGE(脊?fàn)?、GROOVE(凹槽)和 SOLID(實(shí)線)
?· width和height?? ?設(shè)置寬度或高度,如果忽略,容器通常根據(jù)內(nèi)容組件的大小調(diào)整Frame大小
#使用Frame實(shí)現(xiàn)復(fù)雜布局
from tkinter import * #導(dǎo)入tkinter模塊
win=Tk() #創(chuàng)建主窗口對(duì)象
frma=Frame() #框架frma
frmb=Frame() #框架frmb
frma.pack()
frmb.pack()
#添加兩個(gè)標(biāo)簽和兩個(gè)輸入框
lblUname=Label(frma,text="UserName",width=10,fg="black")
etyUname=Entry(frma,width=20)
lblUname.grid(row=1,column=1)
etyUname.grid(row=1,column=2)
lblPwd=Label(frma,text="PassWord",width=10,fg="black")
etyPwd=Entry(frma,width=20)
lblPwd.grid(row=2,column=1)
etyPwd.grid(row=2,column=2)
#向容器中添加兩個(gè)按鈕
btnRest=Button(frmb,text="ReSet",width=10)
btnSubmit=Button(frmb,text="Submit",width=10)
btnRest.grid(row=1,column=1)
btnSubmit.grid(row=1,column=2)
win.title("Frame實(shí)現(xiàn)復(fù)雜布局") # title()方法設(shè)置窗口標(biāo)題
win.geometry("300x150") # geometry()方法設(shè)置窗口大小
win.mainloop() #啟動(dòng)事件循環(huán)
到了這里,關(guān)于python怎么做gui界面,python gui界面設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!