999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2022-12-05 12:19:12周春吟
科學技術創新 2022年35期
關鍵詞:按鈕

周春吟

(三亞城市職業學院,海南 三亞 572022)

1 Python 語言概述

Python 語言是一種解釋型的高級程序設計語言[1]。由荷蘭計算機科學家Guido van Rossum(吉多·范羅蘇姆)于1989 年12 月開始設計并領導開發, 1990 年推出。2010 年,Python2.x 系列發布了最后一版,其主版本號為2.7,用于終結2.x 系列版本的發展,并且不再進行重大改進。2008 年12 月,Python3.0 正式發布。Python3.0版本在語法層面和解釋器內部做了很多重大改進,解釋器內部采用完全面向對象的方式實現。這些重要修改所付出的代價是3.x 系列版本代碼無法向下兼容Python 2.0 系列的既有語法,因此,所有基于Python2.0 系列版本編寫的庫函數都必須修改后才能被Python3.0 系列解釋器運行。“Python2.x 已經是遺產,Python3.x 是這個語言的現在和未來”。

2 Python 語言的特點

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

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

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

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

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

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

3.1 圖形用戶界面概述

3.1.1 常用設計圖形界面的模

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

Tkinter:使用Tk 平臺,Python 系統自帶的標準圖形用戶界面庫。

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

PythonWin:只能在Windows 上使用,使用了本機的

Windows GUI 功能。

JavaSwing:只能用于Jython,使用本機的Java GUI。

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

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

3.1.2 tkinter 模塊

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

(1) 導入tkinter 模塊

例如:import tkinter 或from tkinter import *

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

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

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

(4) 調用pack()方法進行容器的區域布局

(5) 進入主事件循環:win.mainloop()

當容器進入主事件循環狀態時,容器內部的其他圖形對象則處于循環等待狀態, 這樣才能一直保持顯示狀態。

3.2 窗體容器和組件

3.2.1 窗體容器和標簽組件

3.2.1.1 創建窗體

窗體是帶有標題、邊框的一個頂層容器,在其內部可以添加其它組件。

設計一個窗體的主要步驟如下:

(1) 導入tkinter 包:import tkinter

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

(3) 設置窗體初始的大小(寬×高)和位置(x, y):win.geometry(’寬×高+ x 坐標+ y 坐標’)

(4) 設置事件循環,使窗體一直保持顯示狀態:win. mainloop()

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

圖1 創建窗體

3.2.1.2 使用標簽

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

3.2.1.3 按鈕對象

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

3.3 界面布局管理

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

3.3.1 pack 布局

pack 布局管理方式按組件的創建順序在容器區域中排列。

pack 的常用屬性有side 和fill。

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

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

3.3.2 place 布局

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

3.3.3 grid 布局

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

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

3.4 文本框組件

文本框的格式

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

登陸界面運行結果見圖2。

圖2 登陸界面運行結果

3.5 其它常用組件

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

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

表1 按鈕的常用屬性

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

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

3.5.2 標簽框架、下拉列表框和滾動文本框

3.5.2.1 標簽框架LabelFrame

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

標簽框架LabelFrame 的構造方法為:

ttk.LabelFrame(上一級容器, text="標簽顯示的文字內容")

3.5.2.2 下拉列表Combobox

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

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

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

3.5.2.3 滾動文本框scrolledtext

滾動文本框scrolledtext 是一個帶滾動條的文本框,可以輸入多行文本內容。其構造方法為:

scr = scrolledtext.ScrolledText(容器, width=文本框寬度, height=文本框高度)

3.6 菜單與對話框

3.6.1 菜單

創建菜單的主要步驟如下:

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

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

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

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

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

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

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

菜單名稱.add_command (label = " 菜單項名稱",command = 功能函數名)

3.6.2 對話框

Tkinter 提供了三種標準的對話框模塊:

(1) 消息對話框messagebox

(2) 文件對話框filedialog

(3) 顏色選擇對話框colorchooser

3.6.2.1 無返回值的消息對話框

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

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

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

3.6.2.2 有返回值的消息對話框

(1) askokcancel()

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

(2) askquestion()

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

3.6.2.3 文件對話框filedialog

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

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

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

文件對話框filedialog 應用代碼如下:

3.6.2.4 顏色選擇對話框colorchooser

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

3.7 鼠標鍵盤事件

3.7.1 鼠標事件

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

表2 鼠標事件

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

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

鼠標事件運行結果見圖3。

圖3 鼠標事件運行結果

3.7.2 鍵盤事件

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

表3 方向鍵鍵值表

圖4 鍵盤事件運行結果

4 結論

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

猜你喜歡
按鈕
這些按鈕能隨便按嗎?
哪個是門鈴真正的按鈕
當你面前有個按鈕
門鈴按鈕
電動牙刷電源按鈕注射模設計
模具制造(2019年7期)2019-09-25 07:30:00
死循環
內心不能碰的按鈕
商業評論(2014年9期)2015-02-28 04:32:41
青于藍~高考語文核按鈕系列出版書目
中學語文(2013年35期)2013-11-14 03:29:12
沒Gmail按鈕 咱自己加等
移動一族(2008年9期)2008-12-31 00:00:00
全新黑洞與天才按鈕
看世界(2004年9期)2004-04-29 00:00:00
主站蜘蛛池模板: 久久亚洲美女精品国产精品| 91在线无码精品秘九色APP| 精品国产中文一级毛片在线看| 欧美激情福利| 国产最新无码专区在线| 久久成人国产精品免费软件| 伊人丁香五月天久久综合| 亚洲国产天堂在线观看| 麻豆AV网站免费进入| 夜夜操国产| 国产黄网永久免费| 亚洲综合精品香蕉久久网| 欧美性猛交一区二区三区| 日韩精品久久久久久久电影蜜臀| 免费jjzz在在线播放国产| 欧美日韩免费在线视频| 国产精品夜夜嗨视频免费视频| 亚洲精品在线91| 美女被躁出白浆视频播放| 日韩欧美亚洲国产成人综合| 久久国产精品电影| 毛片在线播放网址| 久久精品欧美一区二区| 亚洲黄色激情网站| 四虎在线观看视频高清无码| 狠狠v日韩v欧美v| 国产成人精品18| 制服丝袜一区| 国产精品第一区在线观看| 极品私人尤物在线精品首页| 动漫精品中文字幕无码| 日韩第一页在线| 日韩天堂在线观看| 日韩毛片在线播放| 国产99视频免费精品是看6| 欧美高清视频一区二区三区| 97视频免费在线观看| 亚洲成人网在线观看| 国产二级毛片| 狠狠亚洲五月天| 福利在线一区| 欧美国产精品不卡在线观看| 老司机精品99在线播放| 日韩午夜福利在线观看| 亚洲欧美一区二区三区蜜芽| 亚洲日本中文字幕乱码中文| 欧美影院久久| 国产精品无码一区二区桃花视频| 日韩欧美成人高清在线观看| 88av在线| 国产一区二区三区精品久久呦| 亚洲第一中文字幕| 1级黄色毛片| 国产精品视频第一专区| 欧美a级在线| 熟妇丰满人妻| 国产一区二区福利| 亚洲永久精品ww47国产| 国产欧美视频一区二区三区| 精品国产免费观看| 午夜综合网| 亚洲综合狠狠| 亚洲欧美天堂网| 亚洲综合狠狠| 亚洲欧美天堂网| 亚洲综合片| 日韩成人午夜| 伊人成人在线视频| 成人午夜精品一级毛片| 欧美日韩国产成人高清视频| 日韩在线永久免费播放| 亚洲免费黄色网| 亚洲色图欧美一区| 丝袜久久剧情精品国产| 色综合中文| 国产另类乱子伦精品免费女| 激情六月丁香婷婷四房播| 免费看av在线网站网址| 激情六月丁香婷婷四房播| 无码丝袜人妻| 91麻豆精品国产91久久久久| 高清亚洲欧美在线看|