中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python做界面的方法

發布時間:2020-08-04 11:34:57 來源:億速云 閱讀:215 作者:清晨 欄目:編程語言

這篇文章將為大家詳細講解有關python做界面的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

作為Pyhon開發者,你遲早都會碰到圖形用戶界面(GUI)應用開發任務,這時候我們就需要一些界面庫來幫助我們快速搭建界面,python的界面庫很多,下面給大家介紹幾種常用的界面庫。

1.tkinter

Tkinter(也叫Tk接口)是Tk圖形用戶界面工具包標準的Python接口。Tk是一個輕量級的跨平臺圖形用戶界面(GUI)開發工具。Tk和Tkinter可以運行在大多數的Unix平臺、Windows、和Macintosh系統。

Tkinter 由一定數量的模塊組成。Tkinter位于一個名為_tkinter(較早的版本名為tkinter)的二進制模塊中 。Tkinter包含了對Tk的低 級接口模塊,低級接口并不會被應用級程序員直接使用,通常是一個共享庫(或DLL),但是在一些情況下它也被Python解釋器靜態鏈接。

2.pyqt

PyQt是Qt庫的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次發布也是在1998年,但是當時它叫 PyKDE,因為開始的時候SIP和PyQt沒有分開。PyQt是用SIP寫的。PyQt 提供 GPL版和商業版。

3.wxpython

wxPython 是 Python 語言的一套優秀的 GUI 圖形庫,允許 Python 程序員很方便的創建完整的、功能鍵全的 GUI 用戶界面。 wxPython 是作為優秀的跨平臺 GUI 庫 wxWidgets 的 Python 封裝和 Python 模塊的方式提供給用戶的。

就如同Python和wxWidgets一樣,wxPython也是一款開源軟件,并且具有非常優秀的跨平臺能力,能夠運行在32位windows、絕大多數的Unix或類Unix系統、Macintosh OS X上。

4.Kivy

這是一個非常有趣的項目,基于OpenGL ES 2,支持Android和iOS平臺的原生多點觸摸,作為事件驅動的框架,Kivy非常適合游戲開發,非常適合處理從widgets到動畫的任務。如果你想開發跨平臺的圖形應用,或者僅僅是需要一個強大的跨平臺圖形用戶開發框架,Kivy都是不錯的選擇。

5.pygame

Pygame是跨平臺Python模塊,專為電子游戲設計,包含圖像、聲音。建立在SDL基礎上,允許實時電子游戲研發而無需被低級語言(如機器語言和匯編語言)束縛。

這個庫使用來寫游戲的,但是你也可以用來寫界面。

至于選擇什么庫是個人的喜好,強烈推薦Tkinter,下面給大家介紹一下:

先來看看Tkinter里面的基礎控件:

python做界面的方法

接下來的代碼講解中你需要導入這些

from tkinter import *
from tkinter.tix import Tk, Control, ComboBox  #升級的組合控件包
from tkinter.messagebox import showinfo, showwarning, showerror #各種類型的提示框

在進行界面繪制之前你需要初始化Tk()

root = Tk() # 初始化Tk()

root便是你布局的根節點了,以后的布局都在它之上

root.title("hello tkinter")    # 設置窗口標題
root.geometry("800x1000")    # 設置窗口大小 注意:是x 不是*
root.resizable(width=True, height=True) # 設置窗口是否可以變化長/寬,False不可變,True可變,默認為True
root.tk.eval('package require Tix')  #引入升級包,這樣才能使用升級的組合控件

設置一些窗口屬性

1.Label

再來看看Label,它的屬性很多

activebackground, activeforeground, anchor,
background, bitmap, borderwidth, cursor,
disabledforeground, font, foreground,
highlightbackground, highlightcolor,
highlightthickness, image, justify,
padx, pady, relief, takefocus, text,
textvariable, underline, wraplength
height, state, width

太多了,作用基本和名字一樣,這里就不一一說了,你可以自己去試試,我說一下常用的屬性

lable = Label(root, text="label", bg="pink",bd=10, font=("Arial",12), width=8, height=3)
lable.pack(side=LEFT)

python做界面的方法

最后你需要調用pack()來把控件布置上去,你可以指定布局方式,可定義的屬性也非常多。

# Booleans
NO=FALSE=OFF=0
YES=TRUE=ON=1
 
# -anchor and -sticky
N='n'
S='s'
W='w'
E='e'
NW='nw'
SW='sw'
NE='ne'
SE='se'
NS='ns'
EW='ew'
NSEW='nsew'
CENTER='center'
 
# -fill
NONE='none'
X='x'
Y='y'
BOTH='both'
 
# -side
LEFT='left'
TOP='top'
RIGHT='right'
BOTTOM='bottom'
 
# -relief
RAISED='raised'
SUNKEN='sunken'
FLAT='flat'
RIDGE='ridge'
GROOVE='groove'
SOLID = 'solid'
 
# -orient
HORIZONTAL='horizontal'
VERTICAL='vertical'
 
# -tabs
NUMERIC='numeric'
 
# -wrap
CHAR='char'
WORD='word'
 
# -align
BASELINE='baseline'
 
# -bordermode
INSIDE='inside'
OUTSIDE='outside'
 
# Special tags, marks and insert positions
SEL='sel'
SEL_FIRST='sel.first'
SEL_LAST='sel.last'
END='end'
INSERT='insert'
CURRENT='current'
ANCHOR='anchor'
ALL='all' # e.g. Canvas.delete(ALL)
 
# Text widget and button states
NORMAL='normal'
DISABLED='disabled'
ACTIVE='active'
# Canvas state
HIDDEN='hidden'
 
# Menu item types
CASCADE='cascade'
CHECKBUTTON='checkbutton'
COMMAND='command'
RADIOBUTTON='radiobutton'
SEPARATOR='separator'
 
# Selection modes for list boxes
SINGLE='single'
BROWSE='browse'
MULTIPLE='multiple'
EXTENDED='extended'
 
# Activestyle for list boxes
# NONE='none' is also valid
DOTBOX='dotbox'
UNDERLINE='underline'
 
# Various canvas styles
PIESLICE='pieslice'
CHORD='chord'
ARC='arc'
FIRST='first'
LAST='last'
BUTT='butt'
PROJECTING='projecting'
ROUND='round'
BEVEL='bevel'
MITER='miter'
 
# Arguments to xview/yview
MOVETO='moveto'
SCROLL='scroll'
UNITS='units'
PAGES='pages'

寫完這些你運行程序發現還是無法出現界面,那是因為你還少了一句

root.mainloop()

加上這句話使程序進入消息循環,界面便會顯示出來

學完了label之后學其他控件也就簡單了很多,因為很多屬性都是相同的

2.Button

button=Button(root,text='QUIT',command=root.quit,activeforeground="black",activebackground='blue',bg='red',fg='white')
button.pack(fill=Y,expand=1)

之前說過的屬性如果沒有特殊情況就不再說了

python做界面的方法

python做界面的方法

3.Scale

def resize(ev=None):
    lable.config(font='Helvetica -%d bold'%scale.get())
scale=Scale(root,from_=10,to=40,orient=HORIZONTAL,command=resize)
scale.set(12)
scale.pack()

和button不同的是command不再是點擊事件了而是拖動事件 ,調用set()方法可以設置當前位置

python做界面的方法

python做界面的方法

4.NumbericUpDown

ct=Control(root,label='Number:',integer=True,max=12,min=2,value=2,step=2)
ct.label.config(font='Helvetica 14 bold')
ct.pack()

python做界面的方法

這是一個數字選擇框 其中的字體配置需要使用config()方法來進行配置

python做界面的方法

5.ComboBox

cb=ComboBox(root,label='Type:',editable=True)
for animal in ('dog','cat','hamster','python'):
    cb.insert(END,animal)
cb.pack()

這是一個下拉選擇框,label前面要顯示的字,editable控制是否可更改

調用insert()給下拉選擇框添加選項

python做界面的方法

6.Menu

def click():
    print("點擊了一次")
menubar=Menu(root)
root.config(menu=menubar)
filemenu=Menu(menubar,tearoff=0)
menubar.add_cascade(label='文件',menu=filemenu)
filemenu.add_command(label='新建...',command=click())
filemenu.add_command(label='打開...',command=click())
filemenu.add_command(label='保存',command=click())
filemenu.add_command(label='關閉填寫',command=root.quit)

慘淡藍需要所依附的節點配置menu才能起作用

調用add_cascade給menu添加一項選項

調用add_command則是給外層的選項添加一個子選項

python做界面的方法

7.Frame

frame1 =Frame(root)
frame1.pack(fill=X)
lable1=Label(frame1,text='您的花名:  ')
lable1.grid(row=1,column=0)

frame相當于一個局部的窗體,可以用來裝載其它控件

使用grid能讓你更容易把握控件的位置,你可以指定它出現在幾行幾列,是否跨行跨列,跨幾行等等。

python做界面的方法

8.Radiobutton

frame2=Frame(root)
frame2.pack(fill=X)
lable2=Label(frame2,text='您的性別:  ')
lable2.grid(row=1,column=0)
sex=StringVar()
sex_male=Radiobutton(frame2,text='男',fg='blue',variable=sex,value='男')
sex_male.grid(row=1,column=2)
sex_female=Radiobutton(frame2,text='女',fg='red',variable=sex,value='女')
sex_female.grid(row=1,column=4)

這是一個單選框,里面的屬性之前也說過

python做界面的方法

9.ListBox

frame4 =Frame(root)
frame4.pack(fill=X)
lable4=Label(frame4,text='4、請刪除您不會的變成語言:  ')
lable4.grid(row=1,column=0)
listbox=Listbox(frame4)
listbox.grid(row=1,column=1)
for item in ["C","C++","JAVA","PYTHON","R","SQL","JS"]:
    listbox.insert(END,item)
DELETE=Button(frame4,text="刪除",command=lambda listbox=listbox:listbox.delete(ANCHOR))
DELETE.grid(row=1,column=2)
language=Button(frame4,text="確定")
language.grid(row=2,column=1)

這是一個列表,注意這里按鈕點擊事件的寫法是用lambda表達式寫的。

python做界面的方法

10.Canvas

canvas = Canvas(window, width = 200, height = 100, bg = "White")
canvas.pack()

這是一個畫板,你可以在上面畫各種形狀,上例子:

from tkinter import *
 
class CanvasDemo:
    def __init__(self):
        window = Tk()
        window.title("CanvasDemo")
 
        self.canvas = Canvas(window, width = 200, height = 100, bg = "White")
        self.canvas.pack()
 
        frame = Frame(window)
        frame.pack()
 
        btRectangle = Button(frame, text = "長方形", command = self.displayRect)
        btOval = Button(frame, text="橢 圓", command=self.displayOval)
        btArc = Button(frame, text = "圓 弧", command = self.displayArc)
        btPolygon = Button(frame, text="多邊形", command=self.displayPolygon)
        btLine = Button(frame, text=" 線 ", command=self.displayLine)
        btString = Button(frame, text="文 字", command=self.displayString)
        btClear = Button(frame, text="清 空", command=self.clearCanvas)
 
        btRectangle.grid(row = 1, column = 1)
        btOval.grid(row=1, column=2)
        btArc.grid(row=1, column=3)
        btPolygon.grid(row=1, column=4)
        btLine.grid(row=1, column=5)
        btString.grid(row=1, column=6)
        btClear.grid(row=1, column=7)
 
        window.mainloop()
 
    def displayRect(self):
        self.canvas.create_rectangle(10, 10, 190, 90, tags = "rect")
    def displayOval(self):
        self.canvas.create_oval(10, 10, 190, 90, tags = "oval", fill = "red")
    def displayArc(self):
        self.canvas.create_arc(10, 10, 190, 90, start = -90, extent = 90, width = 5, 
        fill = "red", tags = "arc")
    def displayPolygon(self):
        self.canvas.create_polygon(10, 10, 190, 90, 30, 50, tags = "polygon")
    def displayLine(self):
        self.canvas.create_line(10, 10, 190, 90, fill = 'red', tags = "line")
        self.canvas.create_line(10, 90, 190, 10, width = 9, arrow = "last", activefill = "blue", 
        tags = "line")
    def displayString(self):
        self.canvas.create_text(60, 40, text = "Hi,i am a string",font = "Tine 10 bold underline",
        tags = "string")
    def clearCanvas(self):
        self.canvas.delete("rect", "oval", "arc", "polygon", "line", "string")
 
CanvasDemo()

python做界面的方法

11.CheckButton

frame8=Frame(root)
frame8.pack()
agree=StringVar()
agree=Checkbutton(frame8,text='我同意',variable=agree,onvalue='確定',offvalue="不確定",)
agree.grid()

這是一個多選框,oncalue代表被勾選時的值,offvalue代表不被勾選時的值。

python做界面的方法

12.LabelFrame

frame10=Frame(root)
frame10.pack()
group=LabelFrame(frame10,text='特別鳴謝',padx=5,pady=5)
group.grid()
w=Label(group,text='容器框')
w.pack()

這是個容器框,padx,pady分別控制在x,y方向上的外邊距。

python做界面的方法

關于python做界面的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汽车| 阆中市| 和静县| 舟曲县| 石嘴山市| 中卫市| 常宁市| 钦州市| 北票市| 阳西县| 海安县| 衡南县| 柯坪县| 镇赉县| 新疆| 噶尔县| 三河市| 南阳市| 丘北县| 宁强县| 武安市| 郎溪县| 淳安县| 松阳县| 如皋市| 乌兰浩特市| 天长市| 卓资县| 基隆市| 英吉沙县| 彰化县| 深泽县| 盐边县| 镇赉县| 冀州市| 长武县| 永定县| 镇原县| 枣庄市| 佛坪县| 景谷|