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

        ?

        用PythonTkinter模塊做簡(jiǎn)易畫圖板

        2022-06-01 16:38:23
        電腦報(bào) 2022年20期
        關(guān)鍵詞:按鈕

        一、功能需求分析

        在開始寫代碼之前,先分析程序需要實(shí)現(xiàn)的功能。一個(gè)簡(jiǎn)易的畫圖板應(yīng)該有取色器、畫筆工具、直線工具、矩形工具、圓形工具、一鍵清除這六項(xiàng)基本功能。做這個(gè)程序只需用到Canvas和Button兩種控件。Python 提供了多個(gè)圖形開發(fā)界面的庫,Tkinter、wxPython、Jython都是常用Python GUI 庫。Tkinter是一個(gè)輕量級(jí)的跨平臺(tái)圖形用戶界面(GUI)開發(fā)工具,是Python自帶的官方標(biāo)準(zhǔn)庫,安裝Python 之后直接導(dǎo)入就可以使用, 我們常見的Python IDLE就是使用Tkinter實(shí)現(xiàn)的。需要用到的函數(shù)及函數(shù)用法如下表:

        二、 界面設(shè)計(jì)

        這里使用了網(wǎng)格布局方式的grid布局管理器,簡(jiǎn)便易用。首先,用import導(dǎo)入Tkinter模塊及colorchooser函數(shù)。

        然后設(shè)置窗口標(biāo)題及背景顏色并創(chuàng)建六個(gè)功能按鈕,并設(shè)置row(行)值為0,column(列)值依次增加以將六個(gè)按鈕放在第0行的不同列上。接著在第1行創(chuàng)建一個(gè)Canvas畫布控件。并且將columnspan值設(shè)為6以對(duì)0~5列進(jìn)行合并。這樣Canvas組件就占了6列,有了足夠的寬度。

        代碼如圖1。

        運(yùn)行效果如圖2。

        三、 功能實(shí)現(xiàn)

        1.實(shí)現(xiàn)按鈕響應(yīng)

        接下來我們開始給這些按鈕編寫功能。首先寫出六個(gè)按鈕的事件響應(yīng)函數(shù),并進(jìn)行綁定。

        這里我們聲明了兩個(gè)全局變量:一個(gè)是Shape,用于儲(chǔ)存當(dāng)前工具所繪制的形狀;另一個(gè)是color,用于儲(chǔ)存當(dāng)前顏色的十六進(jìn)制顏色值。

        在取色器事件響應(yīng)函數(shù)中,我們使用了askcolor函數(shù)。在使用askcolor函數(shù)時(shí),用戶選取顏色點(diǎn)擊確定后的返回值是一個(gè)元組,元組中下標(biāo)為0的元素是一個(gè)元組(R,G,B),表示用戶選取顏色的RGB值,下標(biāo)為1的元素是所選顏色的十六進(jìn)制值。

        在畫筆、矩形、直線、圓形工具的事件響應(yīng)函數(shù)中,我們只需要將全局變量Shape設(shè)置成代表形狀的相應(yīng)字符串就行了(注:p代表畫筆,l代表直線,r代表矩形,c代表圓形)。

        在一鍵清除事件響應(yīng)函數(shù)中,我們用Canvas的delete(ALL)函數(shù)刪除畫布的所有內(nèi)容。

        寫完函數(shù)之后,我們把這幾個(gè)按鈕的事件響應(yīng)函數(shù)和左鍵單擊按鈕的事件綁定起來,這樣在用戶按下按鈕的時(shí)候就會(huì)觸發(fā)響應(yīng)函數(shù)了,代碼如圖3。

        2.畫布功能實(shí)現(xiàn)

        然后我們?cè)贑anvas上寫繪制圖形的核心代碼。經(jīng)過分析,我們?cè)诋嫲迳袭媹D時(shí)一般分為三個(gè)階段——落筆(按下鼠標(biāo)左鍵)、繪制(按住鼠標(biāo)左鍵并移動(dòng))、抬筆(松開鼠標(biāo)左鍵)。

        而我們?cè)谔幚砭匦?、圓形、直線操作時(shí),只需要在落筆時(shí)記錄起始點(diǎn)的坐標(biāo)prevX及抬筆時(shí)終止點(diǎn)的坐標(biāo)prevY,再用畫布的函數(shù)繪制相應(yīng)圖形就行了。因此我們就把這三個(gè)工具負(fù)責(zé)繪制相關(guān)功能的函數(shù)都合在了落筆函數(shù)pen_down和抬筆函數(shù)pen_up里面,代碼如圖4。

        但是畫筆工具就沒這么容易了,畫筆工具需要實(shí)時(shí)繪制,即鼠標(biāo)到哪兒筆跡就到哪兒。所以我們需要(在使用畫筆工具時(shí))按下鼠標(biāo)就不斷地繪制點(diǎn),這樣就可以做到實(shí)時(shí)繪制了。

        不過問題又來了,Canvas中并沒有繪制點(diǎn)的坐標(biāo)。所以我們需要用繪制直線的函數(shù)create_line并將起始點(diǎn)坐標(biāo)和終止點(diǎn)坐標(biāo)都設(shè)為當(dāng)前鼠標(biāo)的坐標(biāo),這樣就可以在鼠標(biāo)走過的地方留下小點(diǎn)了,點(diǎn)動(dòng)成線就有了筆跡。最后把畫筆繪制的函數(shù)draw和按下鼠標(biāo)左鍵不放并拖動(dòng)的事件綁定在一起就行了。

        還需要注意的是,在draw函數(shù)里,務(wù)必要判斷當(dāng)前的工具是不是畫筆,不然在使用其他工具時(shí)也會(huì)在鼠標(biāo)后面出現(xiàn)一條筆跡。

        四、運(yùn)行測(cè)試

        至此,畫圖板所有的代碼都完成了,接下來運(yùn)行測(cè)試,修改Bug。簡(jiǎn)易畫圖板就實(shí)現(xiàn)了(圖5)!

        9885F23B-6D7E-47AB-B894-04C86496F1B7

        猜你喜歡
        按鈕
        哪個(gè)是門鈴真正的按鈕
        當(dāng)你面前有個(gè)按鈕
        門鈴按鈕
        電動(dòng)牙刷電源按鈕注射模設(shè)計(jì)
        模具制造(2019年7期)2019-09-25 07:30:00
        死循環(huán)
        十二星座面對(duì)按鈕的反應(yīng)
        知識(shí)窗(2015年9期)2015-05-14 09:08:21
        內(nèi)心不能碰的按鈕
        青于藍(lán)~高考語文核按鈕系列出版書目
        沒Gmail按鈕 咱自己加等
        全新黑洞與天才按鈕
        看世界(2004年9期)2004-04-29 00:00:00
        国产精品久久国产精品99| 夜色视频在线观看麻豆| 久久久大少妇免费高潮特黄| 中国杭州少妇xxxx做受| 女人被狂躁到高潮视频免费网站| 日韩欧美区| 在线视频一区二区在线观看| 那有一级内射黄片可以免费看 | 婷婷开心五月综合基地| 日本超级老熟女影音播放| 天天摸夜夜摸摸到高潮| 久久免费看少妇高潮v片特黄| 国产精品视频一区二区三区,| 亚洲av熟女传媒国产一区二区| 国产精品毛片va一区二区三区| 依依成人精品视频在线观看 | av免费一区二区久久| 少妇人妻中文字幕hd| 亚洲男人天堂| 亚洲色无码中文字幕| av在线不卡一区二区| 色先锋av影音先锋在线| 人妻无码中文专区久久五月婷| 亚洲 美腿 欧美 偷拍| 亚洲天堂av福利在线| 天堂新版在线资源| 高清国产日韩欧美| 18禁成人免费av大片一区| 麻豆文化传媒精品一区观看| 亚洲国产精品成人无码区| 99久久国内精品成人免费| 丰满人妻被持续侵犯中出在线| а√天堂8资源中文在线| 亚洲综合av在线在线播放| 国产免费三级三级三级| 夜夜高潮夜夜爽免费观看| 国产亚洲一本大道中文在线| 制服丝袜天堂国产日韩| av免费在线观看在线观看| 在线无码中文字幕一区| 人妻精品无码一区二区三区|