Kivy 中文教程 執行個體入門 簡易畫板 (Simple Paint App):1. 自訂視窗組件 (widget)

來源:互聯網
上載者:User

標籤:python   touch   組件   座標系統   from   一個   ext   圖片   ref   

1. 架構代碼

用 PyCharm 建立一個名為 SimplePaintApp 的項目,然後建立一個名為 simple_paint_app.py 的 Python 源檔案,

在代碼編輯器中,輸入以下架構代碼

 1 from kivy.app import App 2 from kivy.uix.widget import Widget 3   4   5 class MyPaintWidget(Widget): 6     pass 7   8   9 class MyPaintApp(App):10     def build(self):11         return MyPaintWidget()12  13  14 if __name__ == ‘__main__‘:15     MyPaintApp().run()

運行上面的代碼,將顯示一個黑色背景的視窗

看起來很沒勁的樣子,不過你可不要小瞧這幾行代碼。這些就是簡易畫板的架構代碼,它就像是程式的骨架,後面咪博士將會帶領大家在這副骨架上添加各種新功能,逐步豐富和完善應用。

第 5 行 class MyPaintWidget(Widget): 從類 Widget 繼承,構造我們的自訂視窗組件 MyPaintWidget。畫板的主要邏輯將在 MyPaintWidget 這個類中實現。現在我們唯寫了一個 pass (第 6 行),相當於是預留位置,先讓整段代碼跑起來,具體的功能,我們將在後面的教程中補充。

第 12 行 return MyPaintWidget() 在應用初始化時(調用 build  方法)建立並返回自訂視窗組件對象 MyPaintWidget

2. 添加互動

現在咱們的自訂視窗組件啥也幹不了,接下來我們要嘗試讓它能夠響應使用者的動作。

代碼如下:

 1 from kivy.app import App 2 from kivy.uix.widget import Widget 3   4   5 class MyPaintWidget(Widget): 6     def on_touch_down(self, touch): 7         print(touch) 8   9  10 class MyPaintApp(App):11     def build(self):12         return MyPaintWidget()13  14  15 if __name__ == ‘__main__‘:16     MyPaintApp().run()

運行修改後的代碼,仍然顯示一個黑色的視窗,似乎沒什麼變化。但是,當你用滑鼠在視窗中點擊的時候,發現在 PyCharm 的控制台有輸出,而且隨著點擊位置的不同,輸出的數字也會變化。

當使用者在視窗上用滑鼠點擊的時候,將觸發 MyPaintWidget 的 on_touch_down 方法(第 6 行)。on_touch_down 方法的 touch 參數,包含了滑鼠點擊時的位置資訊。這裡,我們還沒實現什麼有用的互動,只是把滑鼠點擊的位置資訊輸出到控制台,即第 7 行代碼 print(touch)

【思考】

  • 用本節的應用做實驗,思考 kivy 採用的座標系統是什麼樣的?(原點在哪裡?x 和 y 的方向如何?)

原文連結:http://www.ipaomi.com/2017/11/15/kivy-中文教程-執行個體入門-簡易畫板-simple-paint-app:1-自訂視窗部/

Kivy 中文教程 執行個體入門 簡易畫板 (Simple Paint App):1. 自訂視窗組件 (widget)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.