pythonguiwx
① 用python寫了一個檢索人名的小程序,但不知道如何使程序與用wxPython寫的GUI相聯系,程序如下,望前輩指點
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx
class MyFrame3(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame3.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.sizer_7_staticbox = wx.StaticBox(self, -1, _(u"顯示區"))
self.sizer_6_staticbox = wx.StaticBox(self, -1, _(u"功能區"))
self.radio_box_1 = wx.RadioBox(self, -1, _("radio_box_1"), choices=[_("choice 1"), _("choice 2"), _("choice 3")], majorDimension=0, style=wx.RA_SPECIFY_ROWS)
self.button_1 = wx.Button(self, -1, _("button_1"))
self.text_ctrl_1 = wx.TextCtrl(self, -1, "", style=wx.TE_RICH2)
self.__set_properties()
self.__do_layout()
self.Bind(wx.EVT_BUTTON, self.clickButton, self.button_1)
# end wxGlade
def __set_properties(self):
# begin wxGlade: MyFrame3.__set_properties
self.SetTitle(_("frame_4"))
self.SetSize((400, 300))
self.radio_box_1.SetMinSize((210, 90))
self.radio_box_1.SetSelection(0)
self.button_1.SetMinSize((170, 90))
self.text_ctrl_1.SetMinSize((390, 99))
# end wxGlade
def __do_layout(self):
# begin wxGlade: MyFrame3.__do_layout
sizer_4 = wx.BoxSizer(wx.VERTICAL)
sizer_5 = wx.BoxSizer(wx.VERTICAL)
sizer_7 = wx.StaticBoxSizer(self.sizer_7_staticbox, wx.VERTICAL)
sizer_6 = wx.StaticBoxSizer(self.sizer_6_staticbox, wx.VERTICAL)
sizer_8 = wx.BoxSizer(wx.HORIZONTAL)
sizer_8.Add(self.radio_box_1, 0, wx.ALIGN_CENTER_VERTICAL, 0)
sizer_8.Add(self.button_1, 0, wx.ALIGN_CENTER_VERTICAL, 0)
sizer_6.Add(sizer_8, 1, wx.EXPAND, 0)
sizer_5.Add(sizer_6, 1, wx.EXPAND, 0)
sizer_7.Add(self.text_ctrl_1, 0, 0, 0)
sizer_5.Add(sizer_7, 1, wx.EXPAND, 0)
sizer_4.Add(sizer_5, 1, wx.EXPAND, 0)
self.SetSizer(sizer_4)
self.Layout()
# end wxGlade
def clickButton(self, event):
print "Event handler `clickButton' not implemented!"
event.Skip()
# end of class MyFrame3
if __name__ == "__main__":
import gettext
gettext.install("app") # replace with the appropriate catalog name
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
frame_4 = MyFrame3(None, -1, "")
app.SetTopWindow(frame_4)
frame_4.Show()
app.MainLoop()
按照你的要求做了個界面,調用clickButton函數處理你的邏輯,然後調用textbox的setvalue方法將你的結果寫到文本框中
你覺得界面不合理的話,你可以自己調用layout和properties兩個參數是界面參數
② 關於python 的wxphton gui設計里的
參考下面代碼,OnClick裡面可以獲得button對象,然後取得其位置:
'''
Created on 2011-10-13
@author: legendxx
'''
import wx
class ButtonFrame(wx.Frame):
btnno=0
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Button Example',
size=(200, 200))
self.panel = wx.Panel(self, -1)
for i in range(0,3):
text="Button"+str(i+1)
button = wx.Button(self.panel, -1, text, pos=(50, 20+i*50))
self.Bind(wx.EVT_BUTTON, self.OnClick, button)
# self.button.SetDefault()
def OnClick(self, event):
btn=event.GetEventObject()
print btn.GetPosition()
info="button postion:"+str(btn.GetPosition())
wx.MessageBox( info,'postion Info',
wx.OK | wx.ICON_INFORMATION)
# self.AddBtn()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = ButtonFrame()
frame.Show()
app.MainLoop()
③ python常用到哪些庫
Python作為一個設計優秀的程序語言,現在已廣泛應用於各種領域,依靠其強大的第三方類庫,Python在各個領域都能發揮巨大的作用。
下面我們就來看一下python中常用到的庫:
數值計算庫:
1. NumPy
支持多維數組與矩陣運算,也針對數組運算提供大量的數學函數庫。通常與SciPy和Matplotlib一起使用,支持比Python更多種類的數值類型,其中定義的最重要的對象是稱為ndarray的n維數組類型,用於描述相同類型的元素集合,可以使用基於0的索引訪問集合中元素。
2. SciPy
在NumPy庫的基礎上增加了眾多的數學、科學及工程計算中常用的庫函數,如線性代數、常微分方程數值求解、信號處理、圖像處理、稀疏矩陣等,可進行插值處理、信號濾波,以及使用C語言加速計算。
3. Pandas
基於NumPy的一種工具,為解決數據分析任務而生。納入大量庫和一些標準的數據模型,提供高效地操作大型數據集所需的工具及大量的能快速便捷處理數據的函數和方法,為時間序列分析提供很好的支持,提供多種數據結構,如Series、Time-Series、DataFrame和Panel。
數據可視化庫:
4. Matplotlib
第一個Python可視化庫,有許多別的程序庫都是建立在其基礎上或者直接調用該庫,可以很方便地得到數據的大致信息,功能非常強大,但也非常復雜。
5. Seaborn
利用了Matplotlib,用簡潔的代碼來製作好看的圖表。與Matplotlib最大的區別為默認繪圖風格和色彩搭配都具有現代美感。
6. ggplot
基於R的一個作圖庫ggplot2,同時利用了源於《圖像語法》(The Grammar of Graphics)中的概念,允許疊加不同的圖層來完成一幅圖,並不適用於製作非常個性化的圖像,為操作的簡潔度而犧牲了圖像的復雜度。
7. Bokeh
跟ggplot一樣,Bokeh也基於《圖形語法》的概念。與ggplot不同之處為它完全基於Python而不是從R處引用。長處在於能用於製作可交互、可直接用於網路的圖表。圖表可以輸出為JSON對象、HTML文檔或者可交互的網路應用。
8. Plotly
可以通過Python notebook使用,與Bokeh一樣致力於交互圖表的製作,但提供在別的庫中幾乎沒有的幾種圖表類型,如等值線圖、樹形圖和三維圖表。
9. pygal
與Bokeh和Plotly一樣,提供可直接嵌入網路瀏覽器的可交互圖像。與其他兩者的主要區別在於可將圖表輸出為SVG格式,所有的圖表都被封裝成方法,且默認的風格也很漂亮,用幾行代碼就可以很容易地製作出漂亮的圖表。
10. geoplotlib
用於製作地圖和地理相關數據的工具箱。可用來製作多種地圖,比如等值區域圖、熱度圖、點密度圖。必須安裝Pyglet(一個面向對象編程介面)方可使用。
11. missingno
用圖像的方式快速評估數據缺失的情況,可根據數據的完整度對數據進行排序或過濾,或者根據熱度圖或樹狀圖對數據進行修正。
web開發庫:
12. Django
一個高級的Python Web框架,支持快速開發,提供從模板引擎到ORM所需的一切東西,使用該庫構建App時,必須遵循Django的方式。
13. Socket
一個套接字通訊底層庫,用於在伺服器和客戶端間建立TCP或UDP連接,通過連接發送請求與響應。
14. Flask
一個基於Werkzeug、Jinja 2的Python輕量級框架(microframework),默認配備Jinja模板引擎,也包含其他模板引擎或ORM供選擇,適合用來編寫API服務(RESTful rervices)。
15. Twisted
一個使用Python實現的基於事件驅動的網路引擎框架,建立在deferred object之上,一個通過非同步架構實現的高性能的引擎,不適用於編寫常規的Web Apps,更適用於底層網路。
資料庫管理:
16. Mysql-python
又稱MySQLdb,是Python連接MySQL最流行的一個驅動,很多框架也基於此庫進行開發。只支持Python 2.x,且安裝時有許多前置條件。由於該庫基於C語言開發,在Windows平台上的安裝非常不友好,經常出現失敗的情況,現在基本不推薦使用,取代品為衍生版本。
17. mysqlclient
完全兼容MySQLdb,同時支持Python 3.x,是Django ORM的依賴工具,可使用原生SQL來操作資料庫,安裝方式與MySQLdb一致。
18. PyMySQL
純Python實現的驅動,速度比MySQLdb慢,最大的特點為安裝方式簡潔,同時也兼容MySQL-python。
19. SQLAlchemy
一種既支持原生SQL,又支持ORM的工具。ORM是Python對象與資料庫關系表的一種映射關系,可有效提高寫代碼的速度,同時兼容多種資料庫系統,如SQLite、MySQL、PostgreSQL,代價為性能上的一些損失。
自動化運維:
20. jumpsever跳板機
一種由Python編寫的開源跳板機(堡壘機)系統,實現了跳板機的基本功能,包含認證、授權和審計,集成了Ansible、批量命令等。
支持WebTerminal Bootstrap編寫,界面美觀,自動收集硬體信息,支持錄像回放、命令搜索、實時監控、批量上傳下載等功能,基於SSH協議進行管理,客戶端無須安裝agent。主要用於解決可視化安全管理,因完全開源,容易再次開發。
21. Mage分布式監控系統
一種用Python開發的自動化監控系統,可監控常用系統服務、應用、網路設備,可在一台主機上監控多個不同服務,不同服務的監控間隔可以不同,同一個服務在不同主機上的監控間隔、報警閾值可以不同,並提供數據可視化界面。
22. Mage的CMDB
一種用Python開發的硬體管理系統,包含採集硬體數據、API、頁面管理3部分功能,主要用於自動化管理筆記本、路由器等常見設備的日常使用。由伺服器的客戶端採集硬體數據,將硬體信息發送至API,API負責將獲取的數據保存至資料庫中,後台管理程序負責對伺服器信息進行配置和展示。
23. 任務調度系統
一種由Python開發的任務調度系統,主要用於自動化地將一個服務進程分布到其他多個機器的多個進程中,一個服務進程可作為調度者依靠網路通信完成這一工作。
24. Python運維流程系統
一種使用Python語言編寫的調度和監控工作流的平台,內部用於創建、監控和調整數據管道。允許工作流開發人員輕松創建、維護和周期性地調度運行工作流,包括了如數據存儲、增長分析、Email發送、A/B測試等諸多跨多部門的用例。
GUI編程:
25. Tkinter
一個Python的標准GUI庫,可以快速地創建GUI應用程序,可以在大多數的UNIX平台下使用,同樣可以應用在Windows和Macintosh系統中,Tkinter 8.0的後續版本可以實現本地窗口風格,並良好地運行在絕大多數平台中。
26. wxPython
一款開源軟體跨平台GUI庫wxWidgets的Python封裝和Python模塊,是Python語言的一套優秀的GUI圖形庫,允許程序員很方便地創建完整的、功能健全的GUI用戶界面。
27. PyQt
一個創建GUI應用程序的工具庫,是Python編程語言和Qt的成功融合,可以運行在所有主要操作系統上,包括UNIX、Windows和Mac。PyQt採用雙許可證,開發人員可以選擇GPL和商業許可,從PyQt的版本4開始,GPL許可證可用於所有支持的平台。
28. PySide
一個跨平台的應用程式框架Qt的Python綁定版本,提供與PyQt類似的功能,並相容API,但與PyQt不同處為其使用LGPL授權。
更多Python知識請關注Python自學網。
④ python中gui編程wx,事件函數怎樣調用
可以用Bind方法
self.Bind(wx.EVT_BUTTON,self.OnAppend,button)
self是繼承frame的類
OnAppend是定義的事件函數
button是在frame里增加的按鈕
這里有詳細介紹
http://study.163.com/course/courseMain.htm?courseId=1263029
⑤ 八款常用的 Python GUI 開發框架推薦
作為Python開發者,你遲早都會用到圖形用戶界面來開發應用。本文將推薦一些 Python GUI 框架,希望對大家有所幫助。
Python 的 UI 開發工具包 Kivy
https://www.oschina.net/p/kivy
Kivy是一個開源工具包能夠讓使用相同源代碼創建的程序能跨平台運行。它主要關注創新型用戶界面開發,如:多點觸摸應用程序。Kivy還提供一個多點觸摸滑鼠模擬器。當前支持的平台包括:Linux、Windows、Mac OS X和Android。
Kivy擁有能夠處理動畫、緩存、手勢、繪圖等功能。它還內置許多用戶界面控制項如:按紐、攝影機、表格、Slider和樹形控制項等。
Python 的 GUI 開發工具 Flexx
https://www.oschina.net/p/flexx
Flexx 是一個純 Python 工具包,用來創建圖形化界面應用程序。其使用 Web 技術進行界面的渲染。你可以用 Flexx 來創建桌面應用,同時也可以導出一個應用到獨立的 HTML 文檔。因為使用純 Python 開發,所以 Flexx 是跨平台的。只需要有 Python 和瀏覽器就可以運行。如果是使用桌面模式運行,推薦使用 Firefox 。
Qt 庫的 Python 綁定 PyQt
https://www.oschina.net/p/pyqt
PyQt是Qt庫的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次發布也是在1998年,但是當時它叫 PyKDE,因為開始的時候SIP和PyQt沒有分開。PyQt是用SIP寫的。PyQt 提供 GPL版和商業版。
Python圖形開發包 wxPython
https://www.oschina.net/p/wxpython
wxPython 是 Python 語言的一套優秀的 GUI 圖形庫,允許 Python 程序員很方便的創建完整的、功能鍵全的 GUI 用戶界面。 wxPython 是作為優秀的跨平台 GUI 庫 wxWidgets 的 Python 封裝和 Python 模塊的方式提供給用戶的。
就如同Python和wxWidgets一樣,wxPython也是一款開源軟體,並且具有非常優秀的跨平台能力,能夠運行在32位windows、絕大多數的Unix或類Unix系統、Macintosh OS X上。
Tk 圖形用戶界面 Tkinter
https://www.oschina.net/p/tkinter
Tkinter(也叫Tk介面)是Tk圖形用戶界面工具包標準的Python介面。Tk是一個輕量級的跨平台圖形用戶界面(GUI)開發工具。Tk和Tkinter可以運行在大多數的Unix平台、Windows、和Macintosh系統。
Tkinter 由一定數量的模塊組成。Tkinter位於一個名為_tkinter(較早的版本名為tkinter)的二進制模塊中 。Tkinter包含了對Tk的低 級介面模塊,低級介面並不會被應用級程序員直接使用,通常是一個共享庫(或DLL),但是在一些情況下它也被Python解釋器靜態鏈接。
Pywin32
https://www.oschina.net/p/pywin32
Windows Pywin32允許你像VC一樣的形式來使用PYTHON開發win32應用。代碼風格可以類似win32 sdk,也可以類似MFC,由你選擇。如果你仍不放棄vc一樣的代碼過程在python下,那麼這就是一個不錯的選擇。
Python 圖形界面開發包 PyGTK
https://www.oschina.net/p/pygtk
PyGTK讓你用Python輕松創建具有圖形用戶界面的程序.底層的GTK+提供了各式的可視元素和功能,如果需要,你能開發在GNOME桌面系統運行的功能完整的軟體.
PyGTK真正具有跨平台性,它能不加修改地,穩定運行各種操作系統之上,如Linux,Windows,MacOS等.除了簡單易用和快速的原型開發能力外,PyGTK還有一流的處理本地化語言的獨特功能.
用python快速開發絢麗桌面程序 pyui4win
https://www.oschina.net/p/py-ui4win
pyui4win是一個開源的採用自繪技術的界面庫。支持C++和python。用它可以很容易實現QQ和360安全衛士這樣的絢麗界面。而且,pyui4win有所見即所得界面設計器,讓C++開發人員和python開發人員直接用設計工具設計界面,而不用關心界面如何生成和運行,可以顯著縮短界面開發時間。在pyui4win中,界面甚至可以完全交給美工去處理,開發人員可以只負責處理業務邏輯,把開發人員徹底從繁雜的界面處理中解放出來。
以上就是為大家分享的八款常用的python GUI開發框架推薦,希望能對你有幫助。更多python學習資料,可以關注「武漢千鋒」微信公眾號。
⑥ 如何用python做一個顯示文件目錄的GUI
我以前寫過一個替換exe文件的工具,右側使用treeCtrl結構顯示的目錄樹(顯示py文件所在的目錄的文件結構),拖拽文件到左側,然後會自動替換py文件所在的目錄下面的同名文件。你不會用到替換這個功能,但是目錄顯示已經很完善了。源碼如下,由於會使用個別ICON文件(一般ICON使用系統自帶的,看下面預覽,exe和folder還有未知文件我自定義了一下),運行時請使用壓縮包裡面的py文件運行。我使用wx2.9寫的,2.8估計也可以。歡迎PM。(代碼太長了,不讓貼 - -)
⑦ wxPython和PyQt誰才是最贊的Python GUI庫
Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言,Python GUI圖形庫允許Python程序員很方便的創建完整的、功能鍵全的GUI用戶界面。作為Python開發者,你遲早都會用到圖形用戶界面來開發應用,wxPython和PyQt是兩個最受歡迎的Python GUI框架,它們之間有何區別?在實際應用中又該如何選擇呢?
外觀
根據我們的經驗,大多數用戶在使用應用程序時首先關注的一定是應用程序的外觀,所以我們先來比較一下wxPython和PyQt的外觀。
wxPython是Python語言對流行的wxWidgets跨平台GUI工具庫的綁定。而wxWidgets是用C++語言寫成的,所以在GUI中編寫按鈕小部件的代碼時,不會看到類似於另一個操作系統的東西。
▲基於Linux的Thunar和wxPython
PyQt也是使用C++編寫的,它基於著名的Qt工具包。與wxPython不同的是,它不使用native
widget,而是根據它檢測到操作系統創建小部件的近似值。但是它的近似可以說是做到了極致,就連藝術生基本都分辨不出其與原生有何不同。
如果您使用KDE,可以使用其他PyKDE庫來彌補原始PyQt與Linux和BSD之間Plasma desktop外觀之間的差距,但這增加了新的依賴關系。
⑧ Python在初學GUI的時候用wx,import wx提示沒有__version__
import __version__ ?你確定你沒有抄錯?
你試著用print wx.__version__來看看。在我的計算機上返回2.8.12.1
import __version__肯定是錯的。
建議你安裝python(x,y)這個包。這個包比較完整,安裝後,基本上你需要的工具還有包都有了。安裝前要去掉原來系統里的python。
這樣就不容易產生import wx出錯了。 wx的包比較的復雜。通常不要編譯安裝。需要針對你自己的python版本來安裝,版本不能錯,編譯的位數也不能錯。 不能32位安裝在64位上,或者是反過來也不對。
另外還有非官方的包。必須與python同一個編譯器編譯出來的包才能用。