亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        周春吟

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

        1 Python 語(yǔ)言概述

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

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

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

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

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

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

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

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

        3.1 圖形用戶界面概述

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

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

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

        Wxpython:基于wxWindows,具有跨平臺(tái)的特性。

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

        Windows GUI 功能。

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

        PyGTK:使用GTK 平臺(tái),在linux 上很流行。

        PyQt:使用Qt 平臺(tái),跨平臺(tái)。

        3.1.2 tkinter 模塊

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

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

        例如:import tkinter 或from tkinter import *

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

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

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

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

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

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

        3.2 窗體容器和組件

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

        3.2.1.1 創(chuàng)建窗體

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

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

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

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

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

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

        通過(guò)Tk 對(duì)象創(chuàng)建一個(gè)最簡(jiǎn)單窗體示例代碼如下:

        圖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 按鈕對(duì)象

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

        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)位置排列,這種排列方式又稱為絕對(duì)布局。

        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()對(duì)象來(lái)完成。StringVar()是Tkinter 模塊的對(duì)象,它可以跟蹤變量值的變化,把最新的值顯示到界面上。把Entry的textvariable 屬性設(shè)置為StringVar(),再通過(guò)StringVar()的get()和set()函數(shù)讀取和輸出相應(yīng)內(nèi)容。這樣,文本框中始終顯示的值。運(yùn)用文本框?qū)傩栽O(shè)計(jì)一個(gè)密碼驗(yàn)證程序,編寫(xiě)程序代碼如下:

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

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

        3.5 其它常用組件

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

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

        表1 按鈕的常用屬性

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

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

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

        3.5.2.1 標(biāo)簽框架LabelFrame

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

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

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

        3.5.2.2 下拉列表Combobox

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

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

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

        3.5.2.3 滾動(dòng)文本框scrolledtext

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

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

        3.6 菜單與對(duì)話框

        3.6.1 菜單

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

        (1) 創(chuàng)建菜單條對(duì)象: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 對(duì)話框

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

        (1) 消息對(duì)話框messagebox

        (2) 文件對(duì)話框filedialog

        (3) 顏色選擇對(duì)話框colorchooser

        3.6.2.1 無(wú)返回值的消息對(duì)話框

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

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

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

        3.6.2.2 有返回值的消息對(duì)話框

        (1) askokcancel()

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

        (2) askquestion()

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

        3.6.2.3 文件對(duì)話框filedialog

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

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

        文件對(duì)話框的返回值為文件路徑和文件名。

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

        3.6.2.4 顏色選擇對(duì)話框colorchooser

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

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

        3.7.1 鼠標(biāo)事件

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

        表2 鼠標(biāo)事件

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

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

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

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

        3.7.2 鍵盤(pán)事件

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

        表3 方向鍵鍵值表

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

        4 結(jié)論

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

        猜你喜歡
        文本框窗體對(duì)話框
        巧用文本框?qū)崿F(xiàn)PPT多圖片排版
        正常恢復(fù)虛擬機(jī)
        PPT文本框的另類應(yīng)用
        試談Access 2007數(shù)據(jù)庫(kù)在林業(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窗體控件讓表格填寫(xiě)更規(guī)范
        快速抓取對(duì)話框中的完整信息
        電腦迷(2012年22期)2012-04-29 20:30:54
        文本框在地理課件中的應(yīng)用
        国产成人无码区免费内射一片色欲| 精品少妇人妻av一区二区蜜桃| 美女脱了内裤露出奶头的视频| 国产男女猛烈无遮挡免费网站| 亚洲一区欧美二区| 亚洲精品综合在线影院| 精品人妻少妇丰满久久久免| 国产黄大片在线观看画质优化| 午夜精品久久久久久中宇| 欧美久久中文字幕| 青青草视频在线观看精品在线| 国产99视频精品免视看7| 亚洲av无码一区二区三区系列| 99久久亚洲国产高清观看| 91国产精品自拍视频| 又粗又黑又大的吊av| 久久精品久久久久观看99水蜜桃 | 久久亚洲日本免费高清一区| 白白色日韩免费在线观看| 中国女人内谢69xxxxxa片| 欧美巨大xxxx做受中文字幕| 丰满人妻AV无码一区二区三区| 精品极品一区二区三区| 精品区2区3区4区产品乱码9| 国产AV边打电话边出轨| 精品在线视频免费在线观看视频| 熟妇高潮一区二区三区在线观看 | 日韩av免费在线不卡一区| 手机在线观看日韩不卡av| 日韩亚洲av无码一区二区三区| 99热这里只有精品国产66| 蜜桃噜噜一区二区三区| 国产免费爽爽视频在线观看| 国产精品国产三级农村妇女| 精品人妻一区二区三区av| 亚洲国产精品成人久久久| 欧美aa大片免费观看视频| 极品av在线播放| 国产91精品高潮白浆喷水| 国产麻豆精品一区| 美女视频很黄很a免费国产|