整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Python GUI編程:Kivy打造多點觸控應用

          Python GUI編程:Kivy打造多點觸控應用

          識星球:寫代碼那些事

          如果你有收獲|歡迎|點贊|關注|轉發

          這里會定期更新|大廠的開發|架構|方案設計

          這里也會更新|如何摸魚|抓蝦

          #頭條文章發文任務#

          歡迎來到寫代碼那些事 Python作為一種多用途的編程語言,不僅適用于命令行和后端開發,還可以用于創建強大的圖形用戶界面(GUI)應用程序。在本教程中,我們將探索使用Kivy庫來構建多點觸控應用程序。Kivy是一個跨平臺的Python GUI庫,具有豐富的小部件和工具,適用于創建適應移動設備和桌面的用戶界面。讓我們一起深入學習如何利用Kivy開發出具有交互性、美觀性和跨平臺性的應用程序。

          目錄:

          介紹Kivy:跨平臺GUI開發

          1. Kivy簡介

          Kivy是一個開源的Python GUI庫,專為快速開發多點觸控應用程序而設計。它具有跨平臺特性,可在多種操作系統上運行,包括Windows、macOS、Linux、Android和iOS。Kivy以其強大的功能和靈活的設計,成為了開發者構建具有吸引力和交互性的用戶界面的首選工具。

          Kivy的特點:

          • 多點觸控支持: Kivy專注于多點觸控,使開發者能夠創建支持手勢操作的應用,適應移動設備和平板電腦。
          • 跨平臺: Kivy的一大特點是跨平臺性,您可以在不同的操作系統上使用相同的代碼構建應用程序,大大減少了開發時間和工作量。
          • 豐富的小部件: Kivy提供了各種小部件,如按鈕、標簽、文本框等,幫助您輕松構建用戶界面。
          • 自定義樣式: 您可以通過定義樣式和主題來自定義應用的外觀,以滿足不同的設計需求。
          • 動畫和過渡效果: Kivy支持豐富的動畫和過渡效果,讓應用界面更加生動有趣。
          • 開放源代碼: Kivy是一個開源項目,您可以自由地使用、修改和分享它。

          安裝Kivy庫

          在開始使用Kivy之前,您需要將其安裝在您的開發環境中。以下是安裝Kivy庫的步驟:

          1. 使用pip安裝Kivy: 打開終端或命令提示符,輸入以下命令來使用pip安裝Kivy庫:

          ip install kivy
          

          2. 驗證安裝: 安裝完成后,您可以驗證Kivy是否已成功安裝。在終端或命令提示符中,輸入以下命令來運行Kivy示例應用:

          python -m kivy.examples.demo
          

          如果示例應用正常運行,那么Kivy已經安裝成功了。

          創建第一個Kivy應用

          導入Kivy模塊

          在開始編寫Kivy應用之前,首先需要導入Kivy模塊。下面是導入Kivy模塊的示例代碼:

          import kivy
          from kivy.app import App
          from kivy.uix.label import Label
          

          在這個示例中,我們首先導入了Kivy模塊,然后從kivy.app模塊中導入App類,從kivy.uix.label模塊中導入Label類。App類是Kivy應用的基類,用于創建應用實例。Label類用于創建文本標簽小部件。

          創建應用窗口

          在Kivy中,每個應用都需要一個窗口來容納界面元素。下面是創建一個簡單應用窗口的示例代碼:

          class MyApp(App):
              def build(self):
                  return Label(text='Hello, Kivy!')
          

          在這個示例中,我們定義了一個名為MyApp的應用類,繼承自App類。在MyApp類中,我們定義了一個build方法,該方法將返回一個包含文本標簽的窗口。窗口的內容由Label(text='Hello, Kivy!')來定義,表示在窗口中顯示文本"Hello, Kivy!"。

          運行Kivy應用

          要運行Kivy應用,需要在應用類上調用run方法。下面是運行Kivy應用的示例代碼:

          pythonCopy codeif __name__=='__main__':
              MyApp().run()
          

          在這個示例中,我們使用了一個條件語句if __name__=='__main__':來確保應用只在主程序中運行,而不是在導入模塊時運行。然后,我們創建了MyApp類的實例并調用run方法來啟動應用。

          將上述代碼組合在一起,您就創建了一個簡單的Kivy應用,它將在窗口中顯示文本"Hello, Kivy!"。您可以將應用的外觀和交互性進一步定制,以滿足您的需求。

          運行應用時,您將看到一個簡單的窗口,其中顯示了"Hello, Kivy!"的文本標簽。這是一個基本的Kivy應用示例,展示了如何導入Kivy模塊、創建應用窗口以及運行Kivy應用。

          Kivy的小部件:構建用戶界面

          常用小部件介紹(Label、Button、TextInput等)

          Kivy提供了許多常用的小部件,用于構建應用界面。以下是一些常用小部件的介紹以及如何使用它們:

          Label(標簽)

          Label用于在應用界面中顯示靜態文本。您可以使用text屬性設置標簽中顯示的文本內容。

          示例代碼:

          pythonCopy codefrom kivy.uix.label import Label
          
          label=Label(text='Hello, Kivy!')
          

          Button(按鈕)

          Button用于創建可點擊的按鈕,供用戶執行操作。您可以使用text屬性設置按鈕上顯示的文本,以及使用on_press屬性指定按鈕被點擊時觸發的函數。

          示例代碼:

          from kivy.uix.button import Button
          
          def on_button_click(instance):
              print('Button clicked!')
          
          button=Button(text='Click Me')
          button.bind(on_press=on_button_click)
          

          TextInput(文本輸入框)

          TextInput用于接收用戶輸入的文本。您可以使用text屬性獲取或設置輸入框中的文本內容。

          示例代碼:

          from kivy.uix.textinput import TextInput
          
          text_input=TextInput()
          

          使用布局管理器排列小部件

          在Kivy中,您可以使用布局管理器來排列和組織小部件,以創建更復雜的應用界面。Kivy提供了多種布局管理器,包括BoxLayout、GridLayout、FloatLayout等。

          BoxLayout(盒式布局)

          BoxLayout用于水平或垂直排列小部件。您可以使用orientation屬性設置排列方向('horizontal'或'vertical')。

          示例代碼:

          from kivy.uix.boxlayout import BoxLayout
          
          layout=BoxLayout(orientation='vertical')
          layout.add_widget(Label(text='Label 1'))
          layout.add_widget(Label(text='Label 2'))
          

          GridLayout(網格布局)

          GridLayout用于創建網格狀排列的小部件。您可以使用cols屬性設置每行的列數。

          示例代碼:

          from kivy.uix.gridlayout import GridLayout
          
          layout=GridLayout(cols=2)
          layout.add_widget(Button(text='Button 1'))
          layout.add_widget(Button(text='Button 2'))
          

          FloatLayout(浮動布局)

          FloatLayout用于自由排列小部件,可以通過設置小部件的位置來控制布局。

          示例代碼:

          from kivy.uix.floatlayout import FloatLayout
          
          layout=FloatLayout()
          button=Button(text='Button')
          button.pos_hint={'x': 0.4, 'y': 0.5}
          layout.add_widget(button)
          

          以上是一些常用小部件和布局管理器的介紹以及如何使用它們的示例代碼。您可以根據實際需求選擇適合的小部件和布局來創建豐富多樣的應用界面。在下一節中,我們將深入學習Kivy的事件處理和樣式定制。

          多點觸控體驗:處理用戶輸入

          1. 監聽觸摸事件

          在Kivy中,您可以通過監聽觸摸事件來響應用戶的觸摸操作。Kivy提供了一組觸摸事件,您可以根據需要選擇相應的事件進行監聽和處理。

          以下是一些常用的觸摸事件和如何監聽它們:

          • on_touch_down:當用戶按下屏幕時觸發。
          • on_touch_move:當用戶在屏幕上移動手指時觸發。
          • on_touch_up:當用戶松開手指時觸發。

          示例代碼:

          from kivy.uix.widget import Widget
          from kivy.app import App
          
          class TouchApp(App):
              def build(self):
                  return TouchWidget()
          
          class TouchWidget(Widget):
              def on_touch_down(self, touch):
                  print("Touch down at", touch.pos)
              
              def on_touch_move(self, touch):
                  print("Touch move to", touch.pos)
              
              def on_touch_up(self, touch):
                  print("Touch up at", touch.pos)
          
          if __name__=='__main__':
              TouchApp().run()
          

          處理手勢操作

          Kivy還提供了對常見手勢操作的支持,如拖拽、縮放和旋轉。您可以通過監聽對應的觸摸事件來實現這些手勢操作。

          以下是如何處理拖拽、縮放和旋轉手勢的示例代碼:

          from kivy.uix.widget import Widget
          from kivy.app import App
          
          class GestureApp(App):
              def build(self):
                  return GestureWidget()
          
          class GestureWidget(Widget):
              def on_touch_move(self, touch):
                  if touch.is_touching(self):
                      if touch.button=='left':
                          # 拖拽操作
                          self.pos=(self.pos[0] + touch.dx, self.pos[1] + touch.dy)
                      elif touch.button=='right':
                          # 縮放操作
                          self.size=(self.size[0] + touch.dx, self.size[1] + touch.dy)
                      elif touch.button=='middle':
                          # 旋轉操作
                          self.rotation +=touch.dx
              
          if __name__=='__main__':
              GestureApp().run()
          

          在上述代碼中,我們通過監聽on_touch_move事件,根據不同的觸摸按鈕(左鍵、右鍵、中鍵)來實現拖拽、縮放和旋轉操作。

          通過監聽觸摸事件和處理手勢操作,您可以為Kivy應用添加交互性和動態性,從而提升用戶體驗。

          美化應用界面:樣式和主題

          定義樣式和顏色

          在Kivy中,您可以定義樣式和顏色,以使您的應用界面更加美觀和一致。Kivy支持使用CSS樣式的方式定義部件的外觀,并且提供了豐富的顏色選項供您選擇。

          以下是如何定義樣式和顏色的示例代碼:

          from kivy.uix.label import Label
          from kivy.uix.boxlayout import BoxLayout
          from kivy.app import App
          from kivy.core.window import Window
          
          class StyleApp(App):
              def build(self):
                  Window.clearcolor=(0.2, 0.2, 0.2, 1)  # 設置窗口背景顏色
                  return StyleLayout()
          
          class StyleLayout(BoxLayout):
              def __init__(self, **kwargs):
                  super().__init__(**kwargs)
                  
                  # 創建一個標簽,設置樣式和顏色
                  label=Label(text='Hello, Kivy!', font_size=30, color=(1, 0.5, 0.2, 1))
                  
                  # 將標簽添加到布局中
                  self.add_widget(label)
          
          if __name__=='__main__':
              StyleApp().run()
          

          在上述代碼中,我們定義了一個StyleApp類和一個StyleLayout類。在StyleLayout的構造函數中,我們創建了一個標簽,并通過設置font_size屬性和color屬性來定義樣式和顏色。

          應用主題設置

          Kivy還允許您設置應用的主題,以統一界面的外觀風格。您可以通過Kivy提供的App類的屬性來設置應用的主題,包括字體、顏色等。

          以下是如何設置應用主題的示例代碼:

          from kivy.app import App
          from kivy.core.window import Window
          
          class ThemeApp(App):
              def build(self):
                  Window.clearcolor=(0.2, 0.2, 0.2, 1)  # 設置窗口背景顏色
                  self.theme_font='Roboto'  # 設置字體
                  self.theme_color=(0.8, 0.5, 0.1, 1)  # 設置主題顏色
                  return ThemeLayout()
          
          class ThemeLayout(BoxLayout):
              def __init__(self, **kwargs):
                  super().__init__(**kwargs)
                  
                  # 創建一個標簽,應用主題設置
                  label=Label(text='Hello, Kivy!', font_name=App.get_running_app().theme_font,
                                color=App.get_running_app().theme_color)
                  
                  # 將標簽添加到布局中
                  self.add_widget(label)
          
          if __name__=='__main__':
              ThemeApp().run()
          

          在上述代碼中,我們通過在App的子類中定義theme_font和theme_color屬性,然后在布局中使用這些屬性來應用主題設置。

          通過定義樣式、顏色和主題,您可以使Kivy應用的界面更加具有吸引力和統一性。

          適應不同平臺:跨平臺開發

          針對不同屏幕尺寸設計界面

          在移動應用開發中,適應不同屏幕尺寸和分辨率是非常重要的,以確保應用在各種設備上都能正常顯示和使用。Kivy提供了一些方法來處理不同屏幕尺寸的界面設計。

          • 使用布局管理器:Kivy中的布局管理器(如BoxLayout、GridLayout、FloatLayout等)可以根據屏幕尺寸自動調整部件的排列方式和大小,以適應不同屏幕。
          • 使用百分比布局:您可以使用百分比來指定部件的大小和位置,從而在不同屏幕上保持一致的比例。Kivy的RelativeLayout布局允許您以百分比方式設置部件的位置。
          • 使用Window對象:Kivy的Window對象提供了關于當前窗口尺寸的信息,您可以根據這些信息動態調整界面元素的大小和位置。

          處理不同平臺的特性和限制

          不同平臺(如Android、iOS、Windows等)具有不同的特性和限制,因此在開發應用時需要考慮這些因素。以下是一些處理不同平臺特性和限制的方法:

          • 使用平臺特定的API:Kivy提供了一些平臺特定的API,允許您訪問設備的硬件功能和特性。您可以根據平臺類型使用這些API來實現不同的功能。
          • 遵循設計準則:不同平臺有各自的設計準則和用戶體驗標準,您應該遵循相應平臺的設計規范,以確保應用在該平臺上具有一致的外觀和行為。
          • 處理權限和安全性:不同平臺對應用的權限和安全性有不同的要求和限制。您需要確保應用在獲取權限時遵循平臺的規定,并保證用戶數據的安全。
          • 考慮性能和資源消耗:不同平臺的設備性能和資源情況不同,您應該根據平臺的性能限制進行優化,以確保應用在不同設備上都能流暢運行。

          一個DEMO

          from kivy.app import App
          from kivy.uix.boxlayout import BoxLayout
          from kivy.uix.button import Button
          from kivy.uix.textinput import TextInput
          
          class TodoListApp(App):
              def build(self):
                  self.todo_list=[]
                  
                  layout=BoxLayout(orientation='vertical')
                  
                  self.input=TextInput(hint_text='Enter a task...', multiline=False)
                  add_button=Button(text='Add Task')
                  add_button.bind(on_press=self.add_task)
                  
                  layout.add_widget(self.input)
                  layout.add_widget(add_button)
                  
                  return layout
              
              def add_task(self, instance):
                  task=self.input.text
                  if task:
                      self.todo_list.append(task)
                      self.input.text=''
                      self.update_display()
              
              def update_display(self):
                  layout=self.root
                  layout.clear_widgets()
                  
                  for task in self.todo_list:
                      label=Button(text=task)
                      layout.add_widget(label)
                  
                  layout.add_widget(self.input)
                  add_button=Button(text='Add Task')
                  add_button.bind(on_press=self.add_task)
                  layout.add_widget(add_button)
          
          if __name__=='__main__':
              TodoListApp().run()
          


          總結:

          Kivy作為一款強大的跨平臺GUI庫,為Python開發者提供了構建多點觸控應用程序的便捷工具。通過本教程,您已經掌握了使用Kivy創建用戶界面、處理用戶輸入以及美化應用界面的關鍵技能。現在,您可以開始開發自己的多點觸控應用,為用戶提供出色的交互體驗。開始使用Kivy,讓您的Python應用走向全新的高度!

          #Python#? #python#?#編程#? #Python GUI

          著時代的發展,移動互聯網應用向用戶各類生活需求深入滲透,促使手機上網使用率增長。大多數人的生活已經離不開手機與網絡,也正是因為這個原因,所以不少企業開始重視移動端網站建設,但移動端網站建設需要注意哪些問題呢?

          一、加載速度

          無論是PC端還是移動端,網站的加載速度都是需要注意的。一般來說網站的打開速度不要超過3秒,如果打開的速度過長,就會導致蜘蛛不再爬取。所以手機網站一定要提高加載速度,對圖片、功能、代碼等做出合理的安排,要做輕、快、穩這三點。


          二、網站結構

          手機網站跟電腦網站比起來的話,手機網站是相對簡潔的,沒有PC端的那么深入。正常情況下手機網站的所有的主欄目都在首頁可以看到,大多數為三級精簡欄目:首頁 - 欄目頁 - 詳情頁。


          三、文本的大小

          手機網站文本的大小以及布局也要注意。不同的企業面對的用戶和消費群體也不同。例如這個企業的消費定位是年輕人的話,字體通常可以采用14PX或者16PX兩種字體,但如果這個企業的消費定位是中老年人的話,就要適當的放大字體才行。所以不管是以何種方式建站,都要做好定位分析和用戶調查。


          四、內容規劃

          因為手機版面的限制,所以只能夠展現有限的內容。因此,當用戶使用手機閱讀公司的網站時,他們大多數時候都想知道他們在一個頁面上需要的所有內容信息。因此,每個頁面的內容規劃都應該精心設計,產品的詳情頁面長度不要太長。因為大多數用戶都沒有時間閱讀所有頁面,所以可以試著將長度控制在合理的范圍內,向用戶展示主要內容,這有利于用戶獲得更好的體驗。


          五、圖片大小

          網站上如果布局大量的圖片,那么一定會影響網站的加載速度。如果有用戶點擊網站,但是遲緩的加載速度肯定會導致用戶流失。但是為了提高加載速度,又不精簡圖片,反而采取壓縮圖片的話,在小編看來這樣做就是有些得不償失了。影響網站加載的因素有很多,但是圖片壓縮得太厲害,就會導致圖片畫質不清晰,特別是產品圖片的模糊不清很容易讓用戶無法了解產品。


          六、用戶體驗

          無論是PC端還是手機端,網站建設的出發點一定要圍繞用戶體驗來進行。因為移動網站是使用我們的手指滑動,通過觸摸屏操作,所有設計按鈕要符合我們的手指大小,盡量使用css樣式編寫,不要使用圖片,避免加載圖片需要更多的流量和時間,不利于用戶使用。


          七、面包屑導航

          由于手機屏幕的顯示,PC端的長導航條不再合適。所有手機端都有面包屑導航,導航條更簡單,更短,更符合用戶體驗。


          免責申明 | 圖文素材來源于網絡收集整理,版權歸屬原作者,如涉及到版權問題請及時聯系我們,我們將立即刪除內容,感謝理解!

          單賺傭金,這種兼職廣告,大家并不陌生。一部手機、動動手指,足不出戶就能輕松賺錢。“工資當日結算秒到賬”等廣告字眼,讓不少人動了心,為什么明知刷單是詐騙還要參與?為什么被騙了還要繼續刷單?

          警方提醒:不要抱有僥幸心理,警惕詐騙陷阱!

          典型案例

          01

          刷單嘗到甜頭,步步深入陷阱

          2021年5月15日,80后男子通過直播點贊賺紅包,關注了一個名為村亮商貿的微信公眾號,該男子向客服提供了自己的名字、年齡和地址、支付寶收款碼等信息,之后在客服的指導下,男子下載了一個App,添加了該App客服的賬號,該客服向男子發放任務,一開始只是點贊做任務,完成之后會有傭金,起初男子賺了20元傭金,到后來該客服又讓男子下載了另一款App做搶單刷單的任務,在客服的指導下,男子開始進行刷單,最初的時候賺了80多元,正當男子想要提現時卻發現要滿300元以上才能提現,客服告訴男子想要提現就必須繼續刷單,該男子遂向對方提供的賬戶總共進行了十次轉賬,從最初的300元、3000元到后面的30000元50000元,轉出的數額越來越大男子卻沒有絲毫懷疑自己已經落入騙子的刷單陷阱,總共損失共計229300元。

          02

          明知是陷阱仍以身犯險

          5月22日,家住大箕鋪的17歲女生吳某因為刷單被騙了近四千余元,令人意想不到的是,該女生明知是陷阱仍以身犯險。5月22日一大早,吳某在網上看到一條刷單賺錢的信息,通過該信息吳某很快聯系上了對方,在填寫了一份《在線申請入職登記表》后對方開始給吳某派單,第一單是要求吳某在某購物平臺上購買一件價值83元的衣服,同時對方向吳某提供了一個微信收款碼,讓吳某直接掃描該二維碼付款,付款成功后吳某收到了7元的傭金獎勵,吳某看到真的有錢可賺于是繼續完成對方下發的“任務”,金額從300元、1200元、2400元直到4800元,到了4800元的時候對方仍表示吳某沒有完成刷單任務不能結算,吳某覺得自己被騙了遂報警。事后吳某表示:“在轉賬1200元的時候我就意識到自己被騙了,但我又覺得或許真的能賺大錢呢。”抱有僥幸心理讓吳某最終損失數千元。

          03

          加大投入,發覺被騙已為時晚矣

          3月31日,大冶羅橋街道的韓女士遭遇了一場刷單騙局,當天晚上7點多鐘的時候正在刷手機的韓女士突然被人拉進了一個刷單兼職賺外快的微信群,韓女士本對這些不感興趣,當她看到群里有人說自己刷單賺了錢時有些心動了,通過掃描群里發送的二維碼韓女士進入了一個聊天界面,對方自稱接待人員,韓女士選了一個36元的單便開始了任務,首先向對方發過來的支付寶收款碼轉賬了36元,對方發來一個鏈接,韓女士點開后里面顯示“押骰子比大小”,按照對方所說的押了36元后韓女士成功提現了71元,以同樣的方式韓女士陸續獲得了105元、1000元的傭金。韓女士看到回報越來越大也越來越放開膽子來,按照對方所說的分別充值了5000元、25000元、12000元、20000元,可是對方始終辯稱韓女士沒有達到要求要繼續充值,韓女士將此事告知了自己的丈夫,丈夫一聽意識到被騙了趕緊報警,僅僅一晚上韓女士被騙金額共計62000元。

          所有刷單都是詐騙!

          不要有“輕輕松松松賺大錢”的心理!

          不要有任何僥幸心理!

          更不要輕易向陌生賬戶匯款!

          如不幸被騙,請保存好聊天記錄和轉賬記錄,及時報警!

          來源: 平安黃石


          主站蜘蛛池模板: 日韩AV在线不卡一区二区三区 | 国产精品亚洲一区二区麻豆| 在线一区二区三区| 在线日韩麻豆一区| 无码夜色一区二区三区| 99久久精品日本一区二区免费 | 国产午夜毛片一区二区三区| 精品免费国产一区二区| 国产亚洲福利精品一区| 中文字幕在线无码一区二区三区| 丰满爆乳一区二区三区| 免费精品一区二区三区第35| 日韩一区在线视频| AV无码精品一区二区三区宅噜噜| 中文字幕日韩一区| 国产成人高清视频一区二区| 日韩内射美女人妻一区二区三区 | 国产一区二区三区在线视頻 | chinese国产一区二区| 精品无码一区二区三区电影| 在线视频精品一区| 99在线精品一区二区三区| 日本一区二区在线| 中文字幕精品一区二区日本| 国产精品亚洲一区二区在线观看| 国产精品亚洲专一区二区三区 | 97人妻无码一区二区精品免费 | 国产福利精品一区二区| 亚洲性色精品一区二区在线| 国产vr一区二区在线观看| 日韩免费无码一区二区三区 | 精品国产一区二区三区www| 日韩熟女精品一区二区三区| 精品无码一区二区三区在线| 成人区人妻精品一区二区不卡视频 | 精品久久综合一区二区| 亚洲一区二区无码偷拍| 动漫精品第一区二区三区| 日本精品一区二区三区在线视频| 日本一道高清一区二区三区 | 成人一区二区三区视频在线观看|