python中的gui界面编程_python应用系列教程——python的GUI界面编程Tkinter全解
全棧工程師開發(fā)手冊(cè) (作者:欒鵬)
python的GUI界面編程,常用的幾個(gè)python庫(kù)包含如下:
Tkinter:
Tkinter 模塊(Tk 接口)是 Python 的標(biāo)準(zhǔn) Tk GUI 工具包的接口 .Tk 和 Tkinter可以在大多數(shù)的 Unix 平臺(tái)下使用,同樣可以應(yīng)用在 Windows 和 Macintosh 系統(tǒng)里。Tk8.0的后續(xù)版本可以實(shí)現(xiàn)本地窗口風(fēng)格,并良好地運(yùn)行在絕大多數(shù)平臺(tái)中。
wxPython:
wxPython 是一款開源軟件,是 Python 語言的一套優(yōu)秀的 GUI 圖形庫(kù),允許 Python程序員很方便的創(chuàng)建完整的、功能鍵全的 GUI 用戶界面。
Jython:
Jython 程序可以和 Java 無縫集成。除了一些標(biāo)準(zhǔn)模塊,Jython 使用 Java 的模塊。Jython幾乎擁有標(biāo)準(zhǔn)的Python 中不依賴于 C 語言的全部模塊。比如,Jython 的用戶界面將使用 Swing,AWT或者SWT。Jython 可以被動(dòng)態(tài)或靜態(tài)地編譯成 Java 字節(jié)碼。
Tkinter界面庫(kù)
今天我們主要介紹一下Tkinter,在庫(kù)中定義了一些基礎(chǔ)控件對(duì)象,和組合控件對(duì)象。可以在創(chuàng)建控件時(shí)傳遞控件屬性,也可以在創(chuàng)建了控件對(duì)象以后,再設(shè)置屬性。
窗口的GUI編程主要包含的知識(shí)點(diǎn)為窗口(頂層容器)、容器、組合控件、控件、控件屬性、控件函數(shù)。本文提供了一個(gè)demo,包含了對(duì)頂層窗口、基礎(chǔ)控件(標(biāo)簽、按鈕)、組合控件(比例尺控件、NumericUpDown控件、ComboBox)、控件的屬性(文本、位置)、控件函數(shù)(按鈕點(diǎn)擊事件)等內(nèi)容的編程示例。
主要的控件
Button 按鈕控件;在程序中顯示按鈕。
Canvas 畫布控件;顯示圖形元素如線條或文本
Checkbutton 多選框控件;用于在程序中提供多項(xiàng)選擇框
Entry 輸入控件;用于顯示簡(jiǎn)單的文本內(nèi)容
Frame 框架控件;在屏幕上顯示一個(gè)矩形區(qū)域,多用來作為容器
Label 標(biāo)簽控件;可以顯示文本和位圖
Listbox 列表框控件;在Listbox窗口小部件是用來顯示一個(gè)字符串列表給用戶
Menubutton 菜單按鈕控件,由于顯示菜單項(xiàng)。
Menu 菜單控件;顯示菜單欄,下拉菜單和彈出菜單
Message 消息控件;用來顯示多行文本,與label比較類似
Radiobutton 單選按鈕控件;顯示一個(gè)單選的按鈕狀態(tài)
Scale 范圍控件;顯示一個(gè)數(shù)值刻度,為輸出限定范圍的數(shù)字區(qū)間
Scrollbar 滾動(dòng)條控件,當(dāng)內(nèi)容超過可視化區(qū)域時(shí)使用,如列表框。.
Text 文本控件;用于顯示多行文本
Toplevel 容器控件;用來提供一個(gè)單獨(dú)的對(duì)話框,和Frame比較類似
Spinbox 輸入控件;與Entry類似,但是可以指定輸入范圍值
PanedWindow PanedWindow是一個(gè)窗口布局管理的插件,可以包含一個(gè)或者多個(gè)子控件。
LabelFrame labelframe 是一個(gè)簡(jiǎn)單的容器控件。常用與復(fù)雜的窗口布局。
tkMessageBox 用于顯示你應(yīng)用程序的消息框。
控件屬性
Dimension 控件大小;
Color 控件顏色;
Font 控件字體;
Anchor 錨點(diǎn);
Relief 控件樣式;
Bitmap 位圖;
Cursor 光標(biāo);
雖然python可以進(jìn)行界面GUI設(shè)計(jì),不過個(gè)人覺得界面設(shè)計(jì)還有net更牛逼一些。
python2.7下的代碼
#coding:utf-8
from Tkinter import * #控件基礎(chǔ)包,導(dǎo)入這個(gè)包后,這個(gè)包下的所有函數(shù)可以直接調(diào)用
import Tkinter
from Tkinter import Label, Button, END
from Tix import Tk, Control, ComboBox #升級(jí)的組合控件包
from tkMessageBox import showinfo, showwarning, showerror #各種類型的提示框
#除此之外還有很多界面編程的包
#頂層窗口
top = Tkinter.Tk() #創(chuàng)建頂層窗口
top.geometry('250x150') #初始化窗口大小
top.title("標(biāo)題")
top.tk.eval('package require Tix') #引入升級(jí)包,這樣才能使用升級(jí)的組合控件
#標(biāo)簽控件
label = Tkinter.Label(top, text='Hello World!',font='Helvetica -12 bold') #創(chuàng)建標(biāo)簽
label.pack(fill=Y, expand=1) #填充到界面
#按鈕控件
button = Tkinter.Button(top, text='QUIT',command=top.quit,activeforeground='white',activebackground='red', bg='red', fg='white') #創(chuàng)建按鈕,command為回調(diào)函數(shù)
button.pack(fill=Tkinter.X, expand=1) #fill=tkinter.X表示橫向拉伸完全
#自定義函數(shù),控制控件的縮放
def resize(ev=None):
label.config(font='Helvetica -%d bold' % scale.get())
#比例尺控件
scale = Scale(top, from_=10, to=40,orient=HORIZONTAL, command=resize) #縮放比例尺
scale.set(12) #初始值
scale.pack(fill=X, expand=1) #填充到界面
#NumericUpDown控件
ct = Control(top, label='Number:',integer=True, max=12, min=2, value=2, step=2)
ct.label.config(font='Helvetica -14 bold')
ct.pack()
#ComboBox控件
cb = ComboBox(top, label='Type:', editable=True)
for animal in ('dog', 'cat', 'hamster', 'python'):
cb.insert(END, animal)
cb.pack()
Tkinter.mainloop() #運(yùn)行這個(gè)GUI應(yīng)用
在python3中,
Tkinter改成了tkinter,
Tix改成了tkinter.tix,
tkMessageBox 改成了tkinter.messagebox
python3.6下代碼
#coding:utf-8
#GUI界面編程
from tkinter import * #控件基礎(chǔ)包,導(dǎo)入這個(gè)包后,這個(gè)包下的所有函數(shù)可以直接調(diào)用
import tkinter
from tkinter import Label, Button, END
from tkinter.tix import Tk, Control, ComboBox #升級(jí)的組合控件包
from tkinter.messagebox import showinfo, showwarning, showerror #各種類型的提示框
#除此之外還有很多界面編程的包
#頂層窗口
top = tkinter.Tk() #創(chuàng)建頂層窗口
top.geometry('250x150') #初始化窗口大小
top.title("標(biāo)題")
top.tk.eval('package require Tix') #引入升級(jí)包,這樣才能使用升級(jí)的組合控件
#標(biāo)簽控件
label = tkinter.Label(top, text='Hello World!',font='Helvetica -12 bold') #創(chuàng)建標(biāo)簽
label.pack(fill=Y, expand=1) #填充到界面
#按鈕控件
button = tkinter.Button(top, text='QUIT',command=top.quit,activeforeground='white',activebackground='red', bg='red', fg='white') #創(chuàng)建按鈕,command為回調(diào)函數(shù)
button.pack(fill=tkinter.X, expand=1) #fill=tkinter.X表示橫向拉伸完全
#自定義函數(shù),控制控件的縮放
def resize(ev=None):
label.config(font='Helvetica -%d bold' % scale.get())
#比例尺控件
scale = Scale(top, from_=10, to=40,orient=HORIZONTAL, command=resize) #縮放比例尺
scale.set(12) #初始值
scale.pack(fill=X, expand=1) #填充到界面
#NumericUpDown控件
ct = Control(top, label='Number:',integer=True, max=12, min=2, value=2, step=2)
ct.label.config(font='Helvetica -14 bold')
ct.pack()
#ComboBox控件
cb = ComboBox(top, label='Type:', editable=True)
for animal in ('dog', 'cat', 'hamster', 'python'):
cb.insert(END, animal)
cb.pack()
tkinter.mainloop() #運(yùn)行這個(gè)GUI應(yīng)用
總結(jié)
以上是生活随笔為你收集整理的python中的gui界面编程_python应用系列教程——python的GUI界面编程Tkinter全解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql语句查询商品的一二三级分类都是一个
- 下一篇: mysql主键创建非聚集索引_什么是聚集