• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Python 語言圖形用戶界面設(shè)計的研究

    2022-12-05 12:19:12周春吟
    科學(xué)技術(shù)創(chuàng)新 2022年35期
    關(guān)鍵詞:文本框窗體對話框

    周春吟

    (三亞城市職業(yè)學(xué)院,海南 三亞 572022)

    1 Python 語言概述

    Python 語言是一種解釋型的高級程序設(shè)計語言[1]。由荷蘭計算機(jī)科學(xué)家Guido van Rossum(吉多·范羅蘇姆)于1989 年12 月開始設(shè)計并領(lǐng)導(dǎo)開發(fā), 1990 年推出。2010 年,Python2.x 系列發(fā)布了最后一版,其主版本號為2.7,用于終結(jié)2.x 系列版本的發(fā)展,并且不再進(jìn)行重大改進(jìn)。2008 年12 月,Python3.0 正式發(fā)布。Python3.0版本在語法層面和解釋器內(nèi)部做了很多重大改進(jìn),解釋器內(nèi)部采用完全面向?qū)ο蟮姆绞綄?shí)現(xiàn)。這些重要修改所付出的代價是3.x 系列版本代碼無法向下兼容Python 2.0 系列的既有語法,因此,所有基于Python2.0 系列版本編寫的庫函數(shù)都必須修改后才能被Python3.0 系列解釋器運(yùn)行?!癙ython2.x 已經(jīng)是遺產(chǎn),Python3.x 是這個語言的現(xiàn)在和未來”。

    2 Python 語言的特點(diǎn)

    (1) 簡單語法:與傳統(tǒng)的C/C++、Java、C#等語言相比,Python 對代碼格式的要求不那么嚴(yán)格,實(shí)現(xiàn)了相同的功能,Python 中的代碼行數(shù)僅為其他語言的1/10~1/5[2]。這種松散性允許用戶更輕松地編寫代碼,而無需在細(xì)節(jié)上花費(fèi)太多精力。

    (2) Python 是開源的:首先,程序員用Python 編寫的代碼是開源的。我們使用Python 開發(fā)系統(tǒng)。用戶可以下載系統(tǒng)的源代碼,并且可以隨意修改。這也是解釋型語言本身的特性,要運(yùn)行程序,需要源代碼。第二,Python解釋器和模塊的代碼是正式開源的,希望用戶能夠參與其中,共同提高Python 的性能,彌補(bǔ)之前的漏洞。代碼研究得越多,它就越強(qiáng)。

    (3) 通用且靈活:Python 是一種通用編程語言,可用于編寫各種領(lǐng)域的應(yīng)用程序,這為該語法提供了廣闊的應(yīng)用空間。幾乎所有類型的應(yīng)用程序,從圖像處理、科學(xué)計算、數(shù)據(jù)處理到人工智能、Python 語言都可以發(fā)揮重要作用[3]。

    (4) Python 具有高度的可擴(kuò)展性:Python 的可擴(kuò)展性主要體現(xiàn)在模塊上。Python 模塊具有豐富的腳本語言和強(qiáng)大的庫。這些庫或模塊涵蓋了圖形界面編程、網(wǎng)絡(luò)編程和文件操作等應(yīng)用場景。Python 中某些類庫的底層代碼不一定是Python,并且存在C/C++語言,當(dāng)Python需要提高運(yùn)行速度時,可以使用C/C++語言實(shí)現(xiàn),Python將再次調(diào)用它們,Python 依靠其良好的可擴(kuò)展性在一定程度上彌補(bǔ)了運(yùn)行時效率的低下。

    (5) 豐富的類庫:Python 解釋器提供了數(shù)百個內(nèi)置類和函數(shù)庫。此外,世界各地的程序員通過開源社區(qū)貢獻(xiàn)了數(shù)十萬個第三方函數(shù)庫,幾乎涵蓋了計算機(jī)技術(shù)的所有領(lǐng)域,編寫Python 程序可以充分利用現(xiàn)有的內(nèi)置或第三方代碼[4]。

    3 基于Python 語言圖形用戶界面設(shè)計的研究

    3.1 圖形用戶界面概述

    3.1.1 常用設(shè)計圖形界面的模

    Python 有多種用于設(shè)計圖形用戶界面的模塊,常用的模塊有如下幾種:

    Tkinter:使用Tk 平臺,Python 系統(tǒng)自帶的標(biāo)準(zhǔn)圖形用戶界面庫。

    Wxpython:基于wxWindows,具有跨平臺的特性。

    PythonWin:只能在Windows 上使用,使用了本機(jī)的

    Windows GUI 功能。

    JavaSwing:只能用于Jython,使用本機(jī)的Java GUI。

    PyGTK:使用GTK 平臺,在linux 上很流行。

    PyQt:使用Qt 平臺,跨平臺。

    3.1.2 tkinter 模塊

    使用tkinter 模塊的基本步驟如下:

    (1) 導(dǎo)入tkinter 模塊

    例如:import tkinter 或from tkinter import *

    (2) 創(chuàng)建一個頂層容器對象

    例如:創(chuàng)建一個窗體對象: win = tkinter.Tk()(

    3) 在頂層容器對象中,添加其它組件

    (4) 調(diào)用pack()方法進(jìn)行容器的區(qū)域布局

    (5) 進(jìn)入主事件循環(huán):win.mainloop()

    當(dāng)容器進(jìn)入主事件循環(huán)狀態(tài)時,容器內(nèi)部的其他圖形對象則處于循環(huán)等待狀態(tài), 這樣才能一直保持顯示狀態(tài)。

    3.2 窗體容器和組件

    3.2.1 窗體容器和標(biāo)簽組件

    3.2.1.1 創(chuàng)建窗體

    窗體是帶有標(biāo)題、邊框的一個頂層容器,在其內(nèi)部可以添加其它組件。

    設(shè)計一個窗體的主要步驟如下:

    (1) 導(dǎo)入tkinter 包:import tkinter

    (2) 創(chuàng)建窗體對象:win = tkinter.Tk()

    (3) 設(shè)置窗體初始的大?。▽挕粮撸┖臀恢茫▁, y):win.geometry(’寬×高+ x 坐標(biāo)+ y 坐標(biāo)’)

    (4) 設(shè)置事件循環(huán),使窗體一直保持顯示狀態(tài):win. mainloop()

    通過Tk 對象創(chuàng)建一個最簡單窗體示例代碼如下:

    圖1 創(chuàng)建窗體

    3.2.1.2 使用標(biāo)簽

    標(biāo)簽是用于窗體容器中顯示文字內(nèi)容的組件。標(biāo)簽的基本格式為:label = tkinter.Label (容器名稱,顯示文字或圖像內(nèi)容,顯示位置, 文字字體、顏色等)標(biāo)簽應(yīng)用示例代碼如下:

    3.2.1.3 按鈕對象

    創(chuàng)建按鈕對象的方法為:Btn = tkinter.Button(容器,text ="按鈕上的文字")由于按鈕是一個普通組件,設(shè)計時必須放置到一個容器中,以下是設(shè)計一個按鈕事件程序代碼:

    3.3 界面布局管理

    Python 定義了3 種界面布局管理方式。

    3.3.1 pack 布局

    pack 布局管理方式按組件的創(chuàng)建順序在容器區(qū)域中排列。

    pack 的常用屬性有side 和fill。

    side 屬性:其取值為’top’、’bottom’、’left’、’right’,分別表示組件排列在上、下、左、右的位置。默認(rèn)為top。

    fill 屬性:其取值為’x’、’y’、’both’,分別表示填充x(水平)或y(垂直)方向的空間。

    3.3.2 place 布局

    place 布局管理方式為指定組件的坐標(biāo)位置排列,這種排列方式又稱為絕對布局。

    3.3.3 grid 布局

    grid 布局管理方式為網(wǎng)格布局,組件放置在二維表格的單元格中。

    grid 布局的常用屬性有:row(行)、column(列)、rowspan(組件占據(jù)行數(shù))、columnspan(組件占據(jù)列數(shù))。

    3.4 文本框組件

    文本框的格式

    Python 中,文本框Entry 用于接收輸入的數(shù)據(jù)。文本框Entry 的基本格式為:txt = tkinter.Entry (容器名稱,width=寬度, 文字字體、顏色等)文本框中的內(nèi)容設(shè)置及獲取文本框Entry 中文字內(nèi)容的操作可以使用StringVar()對象來完成。StringVar()是Tkinter 模塊的對象,它可以跟蹤變量值的變化,把最新的值顯示到界面上。把Entry的textvariable 屬性設(shè)置為StringVar(),再通過StringVar()的get()和set()函數(shù)讀取和輸出相應(yīng)內(nèi)容。這樣,文本框中始終顯示的值。運(yùn)用文本框?qū)傩栽O(shè)計一個密碼驗(yàn)證程序,編寫程序代碼如下:

    登陸界面運(yùn)行結(jié)果見圖2。

    圖2 登陸界面運(yùn)行結(jié)果

    3.5 其它常用組件

    3.5.1 單選按鈕(Radiobutton)和復(fù)選框(Checkbutton)

    單選按鈕Radiobutton、復(fù)選框Checkbutton 是一組表示多種“選擇”的組件。它們都只有兩種狀態(tài):“選中/未選中”(ON/OFF),其屬性和方法都類似,按鈕的常用屬性見表1。

    表1 按鈕的常用屬性

    在創(chuàng)建單選按鈕Radiobutton 或復(fù)選框Checkbutton 時,要先聲明一個選擇狀態(tài)變量:chVarDis = tk.Int-Var()

    該變量記錄單選按鈕或復(fù)選框是否被勾選的狀態(tài),可以通過chVarDis.get()來獲取其的狀態(tài),其狀態(tài)值為int類型 勾選為1 未勾選為0。另外,復(fù)選框Checkbutton對象的select()方法表示勾選,deselect()方法表示不勾選。

    3.5.2 標(biāo)簽框架、下拉列表框和滾動文本框

    3.5.2.1 標(biāo)簽框架LabelFrame

    標(biāo)簽框架LabelFrame 是一個帶邊框的容器,可以在該容器中放置其它組件。

    標(biāo)簽框架LabelFrame 的構(gòu)造方法為:

    ttk.LabelFrame(上一級容器, text="標(biāo)簽顯示的文字內(nèi)容")

    3.5.2.2 下拉列表Combobox

    下拉列表Combobox 是常用的一種選值組件,使用下拉列表時要先聲明一個取值變量:number = tk.StringVar()

    該變量記錄在下拉列表中預(yù)設(shè)的值中所選取的字符值,在下拉列表中所預(yù)設(shè)的值為一個元組。

    下拉列表Combobox 的構(gòu)造方法為:ttk.Combobox(容器, width=寬度, textvariable=取值變量)

    3.5.2.3 滾動文本框scrolledtext

    滾動文本框scrolledtext 是一個帶滾動條的文本框,可以輸入多行文本內(nèi)容。其構(gòu)造方法為:

    scr = scrolledtext.ScrolledText(容器, width=文本框?qū)挾? height=文本框高度)

    3.6 菜單與對話框

    3.6.1 菜單

    創(chuàng)建菜單的主要步驟如下:

    (1) 創(chuàng)建菜單條對象:menubar = Menu(窗體容器)

    (2) 把菜單條放置到窗體中:窗體容器. config(menu = menubar)

    (3) 在菜單條中創(chuàng)建菜單:菜單名稱= Menu(menubar, tearoff = 0)

    其中,tearoff 取值0 表示菜單不能獨(dú)立使用。

    (4) 為菜單添加文字標(biāo)簽

    menubar.add_cascade(label = "文字標(biāo)簽", menu =菜單名稱)

    (5) 在菜單中添加菜單項(xiàng)

    菜單名稱.add_command (label = " 菜單項(xiàng)名稱",command = 功能函數(shù)名)

    3.6.2 對話框

    Tkinter 提供了三種標(biāo)準(zhǔn)的對話框模塊:

    (1) 消息對話框messagebox

    (2) 文件對話框filedialog

    (3) 顏色選擇對話框colorchooser

    3.6.2.1 無返回值的消息對話框

    消息對話框分為無返回值的對話框和有返回值的對話框,這二種消息對話框的導(dǎo)入模塊語句都是一樣的。

    (1) 消息對話框的導(dǎo)入模塊語句

    (2) 消息提示框:tkinter.messagebox.showinfo (’提示’,’快樂每一天’)

    3.6.2.2 有返回值的消息對話框

    (1) askokcancel()

    askokcancel()函數(shù)在對話框中顯示“確定”和“取消”按鈕,其返回值分別為“Ture”或“False”。

    (2) askquestion()

    askquestion()函數(shù)在對話框中顯示“是”和“否”按鈕,其返回值分別為“yes”或“no”。

    3.6.2.3 文件對話框filedialog

    (1) 導(dǎo)入文件對話框模塊語句:import tkinter.filedialog

    (2) 獲取文件對話框返回值

    文件對話框的返回值為文件路徑和文件名。

    文件對話框filedialog 應(yīng)用代碼如下:

    3.6.2.4 顏色選擇對話框colorchooser

    colorchooser.askcolor()提供一個用戶選擇顏色的界面。其返回值是一個二元組,第1 個元素是選擇的RGB顏色值,第2 個元素是對應(yīng)的十六進(jìn)制顏色值。

    3.7 鼠標(biāo)鍵盤事件

    3.7.1 鼠標(biāo)事件

    在Pyton 中,tkinter 模塊的事件event 都用字符串描述,格式為:組件對象.bind(event, handler)其中,event為事件,handler 為處理事件的函數(shù)。鼠標(biāo)按鈕的點(diǎn)擊事件的一般格式為:<ButtonPress-n> 其中,n 為鼠標(biāo)按鈕,n 為1 代表左鍵,2 代表中鍵,3 代表右鍵。例如,<ButtonPress-1>, 表示按下鼠標(biāo)的左鍵。(見表2)

    表2 鼠標(biāo)事件

    可以通過鼠標(biāo)事件event 來獲得鼠標(biāo)位置。坐標(biāo)點(diǎn)(event.x,event.y)為發(fā)生事件時,鼠標(biāo)所在的位置。

    編寫捕獲鼠標(biāo)點(diǎn)擊事件的程序。當(dāng)鼠標(biāo)在窗體容器中點(diǎn)擊時,記錄下其坐標(biāo)位置。

    鼠標(biāo)事件運(yùn)行結(jié)果見圖3。

    圖3 鼠標(biāo)事件運(yùn)行結(jié)果

    3.7.2 鍵盤事件

    表3 為方向鍵鍵值表。在捕獲鍵盤事件時,先要用focus_set()方法把鍵盤的焦點(diǎn)設(shè)置到一個組件上,這樣才能捕獲到鍵盤事件,捕獲鍵盤事件,在窗體中顯示按下的鍵:鍵盤事件運(yùn)行結(jié)果見圖4。

    表3 方向鍵鍵值表

    圖4 鍵盤事件運(yùn)行結(jié)果

    4 結(jié)論

    為了促進(jìn)學(xué)生更好、更直觀地學(xué)習(xí)圖形用戶界面設(shè)計以及Python 的基本知識,設(shè)計實(shí)現(xiàn)一個所見即所得的用戶界面,學(xué)生可以通過本研究學(xué)習(xí),學(xué)會如何在用戶和程序之間可以方便地進(jìn)行交互,如何介紹設(shè)計友好的圖形用戶界面應(yīng)用程序。盡管Python 在C/C++、Java、C#等語言當(dāng)中是一種非常年輕的語言,但其強(qiáng)大的優(yōu)勢不容小覷。近幾年來,Python 在編程領(lǐng)域,一直在穩(wěn)步上升。相信Python 在未來會有更強(qiáng)的發(fā)展,并且很可能成為快速發(fā)展的主流語言[5]。

    猜你喜歡
    文本框窗體對話框
    巧用文本框?qū)崿F(xiàn)PPT多圖片排版
    正常恢復(fù)虛擬機(jī)
    PPT文本框的另類應(yīng)用
    試談Access 2007數(shù)據(jù)庫在林業(yè)檔案管理中的應(yīng)用
    檔案天地(2019年5期)2019-06-12 05:12:02
    Bootlace Worms’Secret etc.
    文本框酷變3D效果
    基于LayeredWindow的異形窗體局部刷新
    中文信息(2014年2期)2014-03-06 23:49:14
    巧設(shè)WPS窗體控件讓表格填寫更規(guī)范
    快速抓取對話框中的完整信息
    電腦迷(2012年22期)2012-04-29 20:30:54
    文本框在地理課件中的應(yīng)用
    石屏县| 绥德县| 乌鲁木齐县| 青浦区| 宁安市| 司法| 铁岭市| 海阳市| 和田县| 外汇| 白朗县| 芜湖县| 集安市| 新河县| 格尔木市| 房山区| 凤庆县| 陆河县| 宁化县| 霸州市| 乐至县| 宜阳县| 松滋市| 潢川县| 江西省| 木里| 武隆县| 德化县| 皮山县| 沿河| 沁阳市| 栖霞市| 宁乡县| 德清县| 东兰县| 泰和县| 通海县| 盐山县| 津南区| 乐安县| 唐河县|