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

        ?

        基于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ū)ο蟮姆绞綄崿F(xiàn)。這些重要修改所付出的代價是3.x 系列版本代碼無法向下兼容Python 2.0 系列的既有語法,因此,所有基于Python2.0 系列版本編寫的庫函數(shù)都必須修改后才能被Python3.0 系列解釋器運行?!癙ython2.x 已經(jīng)是遺產(chǎn),Python3.x 是這個語言的現(xiàn)在和未來”。

        2 Python 語言的特點

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

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

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

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

        (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)容。這樣,文本框中始終顯示的值。運用文本框?qū)傩栽O(shè)計一個密碼驗證程序,編寫程序代碼如下:

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

        圖2 登陸界面運行結(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 表示菜單不能獨立使用。

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

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

        (5) 在菜單中添加菜單項

        菜單名稱.add_command (label = " 菜單項名稱",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)按鈕的點擊事件的一般格式為:<ButtonPress-n> 其中,n 為鼠標(biāo)按鈕,n 為1 代表左鍵,2 代表中鍵,3 代表右鍵。例如,<ButtonPress-1>, 表示按下鼠標(biāo)的左鍵。(見表2)

        表2 鼠標(biāo)事件

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

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

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

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

        3.7.2 鍵盤事件

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

        表3 方向鍵鍵值表

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

        4 結(jié)論

        為了促進(jìn)學(xué)生更好、更直觀地學(xué)習(xí)圖形用戶界面設(shè)計以及Python 的基本知識,設(shè)計實現(xiàn)一個所見即所得的用戶界面,學(xué)生可以通過本研究學(xué)習(xí),學(xué)會如何在用戶和程序之間可以方便地進(jìn)行交互,如何介紹設(shè)計友好的圖形用戶界面應(yīng)用程序。盡管Python 在C/C++、Java、C#等語言當(dāng)中是一種非常年輕的語言,但其強大的優(yōu)勢不容小覷。近幾年來,Python 在編程領(lǐng)域,一直在穩(wěn)步上升。相信Python 在未來會有更強的發(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)用
        久久久久亚洲av成人人电影| AV教师一区高清| 久久久2019精品视频中文字幕| 极品视频一区二区三区在线观看| av免费一区在线播放| 暴露的熟女好爽好爽好爽| 亚洲熟妇av一区二区三区hd| av一区无码不卡毛片 | 亚洲色图视频在线观看网站| 日韩精品极品视频在线观看蜜桃| 日韩精品午夜视频在线| 成人国产精品一区二区八戒网| 伊人久久精品无码二区麻豆 | 美女黄频视频免费国产大全 | 成人自拍三级在线观看| 国产黑色丝袜在线看片| 四虎国产精品永久在线| 日韩欧美成人免费观看| 伊人蕉久中文字幕无码专区| 国产精品九九九无码喷水| 亚洲亚洲亚洲亚洲亚洲天堂| 蜜桃视频网址在线观看| 手机免费在线观看av网址| 成人影院yy111111在线| av免费网站免费久久网| 国产自拍av在线观看视频| 久久天天躁狠狠躁夜夜avapp| 中文字幕人妻丝袜乱一区三区| 手机看片1024精品国产| 国产 无码 日韩| 亚洲一区二区三区偷拍女| 亚洲av无码乱码在线观看牲色| 无套内射无矿码免费看黄| 国产91精选在线观看麻豆| 国产精品国产三级国产三不| 精品人妻av中文字幕乱| 日本不卡高字幕在线2019| 亚洲无线码一区二区三区| 久久免费的精品国产v∧| 2021精品国产综合久久| 日本无吗一区二区视频|