日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

wxpython 下拉框只能选择不能输入_用wxPython创建GUI应用程序展示NASA图片(第三部分)...

發布時間:2023/12/19 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wxpython 下拉框只能选择不能输入_用wxPython创建GUI应用程序展示NASA图片(第三部分)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

regular_search.py腳本

regular_search模塊包含重構的ObjectListView,用于顯示搜索結果,其上還包含下載按鈕。

下面這些方法/類由于已經在前面提及,這里將不再闡述:

  • on_download()
  • on_selection()
  • update_image()
  • update_search_results()
  • The Result class

下面是模塊中的前幾行:

這里導入了version_1中的nasa_search_ui.py的全部模塊,同時還需要使用base_url向NASA的圖像API發送請求。唯一新導入的是pubsub。

接下來創建RegularSearch類:

此代碼將search_results列表初始化為空并設置圖像的max_size。它還設置了一個sizer和ObjectListView部件,用于向用戶展示搜索結果。當所有類組合在一起時,代碼實際上非常類似于代碼的第一次迭代。

以下是__init__()的其余代碼:

首先在main_sizer中添加一個spacer。然后添加標題和圖像相關部件,最后添加一個下載按鈕。

接下來,需要編寫一個新方法:

reset_image()方法用于將wx.StaticBitmap重置為空。當用戶先使用常規搜索,再使用高級搜索時,可能會發生這種情況。重制圖像可避免用戶看到之前的選擇內容而感到困惑。

最后需要實現的方法是load_search_results():

當使用pubsub時,將調用load_search_results()方法。main和advanced_search模塊通過傳遞請求參數來調用,然后將結果編碼為格式化的URL。接下來使用requests發送JSON請求,然后提取結果。此時也會調用reset_image()方法,以便在加載一組新結果時,不會選擇任何內容。

接下來就可以實現高級搜索了!

advanced_search.py腳本

advanced_search模塊作為wx.Panel,包含對NASA API進行高級搜素所需的全部部件。如果您閱讀他們的文檔,您會發現大約有十幾個過濾器可以用于搜索。

讓我們從最上層開始:

設置各種過濾器的代碼非常相似,為過濾器創建一個文本控件,然后將其與一個字符串傳遞給ui_helper(),該字符串是文本控件的標簽。重復上述步驟,直到完成所有的設置。

以下是其余的過濾器:

最后,將sizer設置為main_sizer。注意,并非所有NASA API中的過濾器都在此代碼中實現。例如,我并沒有添加media_type,因為此應用只用于圖像搜索。但是,如果需要搜索視頻或音頻,可以更新此程序。此外,year_start和year_end也未實現。如果需要,可隨時添加。

下面將實現ui_helper()方法:

ui_helper()用于標簽文本和文本控制部件,然后創建一個wx.BoxSizer和wx.StaticText。由于傳入文本控制部件,wx.StaticText被添加進sizer。最后,將新的sizer添加到main_sizer中。這是減少冗余代碼的好方法。

最后在類中需要創建on_search():

當用戶按下“搜索”按鈕時,將調用此事件處理程序。它根據用戶輸入字段作為查詢條件進行搜索,然后程序將通過pubsub發送兩條消息。第一條消息將更新UI,以便隱藏高級搜索并顯示搜索結果。第二條消息則執行對NASA API的搜索。

高級搜索頁面的樣式如下:

接下來將更新下載對話框。

download_dialog.py腳本

下載對話框有幾處小更改,需要導入Python的os模塊并更新save()函數。

在函數的開頭添加如下代碼:

添加此代碼是為了說明用戶在保存文件名中未指定擴展名的情況。

打包

本文涵蓋了許多有趣的新內容,講述了一種沒有Python包的情況下使用開放式API的方法。通過本文,您了解到閱讀API文檔的重要性,學習了如何實現用戶界面。此外,還掌握了如何解析JSON以及下載圖像。

盡管本文未曾提及,Python提供一個json模塊用于解析。

當然,此應用程序還存在可完善的地方:

  • 緩存搜索結果
  • 在后臺下載縮略圖
  • 在后臺下載鏈接

可以利用線程下載縮略圖和較大的圖像以及一般的Web請求,這有助于改善程序性能。您可能已經注意到,程序存在響應緩慢的問題,這取決于您的網絡狀況。這是因為當執行Web請求或下載文件時,它會阻塞UI的主循環。如果發生類似情況,建議使用線程。

代碼下載

  • 源碼由tarball打包

相關閱讀

  • 基于wxPython實現計算器
  • 如何分發wxPython應用程序
英文原文:https://www.blog.pythonlibrary.org/2019/04/18/creating-a-gui-application-for-nasas-api-with-wxpython/ 譯者:我是昵稱耶~ 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的wxpython 下拉框只能选择不能输入_用wxPython创建GUI应用程序展示NASA图片(第三部分)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。