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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

?

regular_search.py腳本

regular_search模塊包含重構(gòu)的ObjectListView,用于顯示搜索結(jié)果,其上還包含下載按鈕。

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

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

下面是模塊中的前幾行:

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

接下來創(chuàng)建RegularSearch類:

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

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

首先在main_sizer中添加一個(gè)spacer。然后添加標(biāo)題和圖像相關(guān)部件,最后添加一個(gè)下載按鈕。

接下來,需要編寫一個(gè)新方法:

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

最后需要實(shí)現(xiàn)的方法是load_search_results():

當(dāng)使用pubsub時(shí),將調(diào)用load_search_results()方法。main和advanced_search模塊通過傳遞請求參數(shù)來調(diào)用,然后將結(jié)果編碼為格式化的URL。接下來使用requests發(fā)送JSON請求,然后提取結(jié)果。此時(shí)也會(huì)調(diào)用reset_image()方法,以便在加載一組新結(jié)果時(shí),不會(huì)選擇任何內(nèi)容。

接下來就可以實(shí)現(xiàn)高級(jí)搜索了!

advanced_search.py腳本

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

讓我們從最上層開始:

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

以下是其余的過濾器:

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

下面將實(shí)現(xiàn)ui_helper()方法:

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

最后在類中需要?jiǎng)?chuàng)建on_search():

當(dāng)用戶按下“搜索”按鈕時(shí),將調(diào)用此事件處理程序。它根據(jù)用戶輸入字段作為查詢條件進(jìn)行搜索,然后程序?qū)⑼ㄟ^pubsub發(fā)送兩條消息。第一條消息將更新UI,以便隱藏高級(jí)搜索并顯示搜索結(jié)果。第二條消息則執(zhí)行對NASA API的搜索。

高級(jí)搜索頁面的樣式如下:

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

download_dialog.py腳本

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

在函數(shù)的開頭添加如下代碼:

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

打包

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

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

當(dāng)然,此應(yīng)用程序還存在可完善的地方:

  • 緩存搜索結(jié)果
  • 在后臺(tái)下載縮略圖
  • 在后臺(tái)下載鏈接

可以利用線程下載縮略圖和較大的圖像以及一般的Web請求,這有助于改善程序性能。您可能已經(jīng)注意到,程序存在響應(yīng)緩慢的問題,這取決于您的網(wǎng)絡(luò)狀況。這是因?yàn)楫?dāng)執(zhí)行Web請求或下載文件時(shí),它會(huì)阻塞UI的主循環(huán)。如果發(fā)生類似情況,建議使用線程。

代碼下載

  • 源碼由tarball打包

相關(guān)閱讀

  • 基于wxPython實(shí)現(xiàn)計(jì)算器
  • 如何分發(fā)wxPython應(yīng)用程序
英文原文:https://www.blog.pythonlibrary.org/2019/04/18/creating-a-gui-application-for-nasas-api-with-wxpython/ 譯者:我是昵稱耶~ 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。