pythongui開發
如果非要說的話,可以。
方案一:
C# 開發 GUI,然後 C++/CLR 提供本機介面,python 能直接調用本機代碼。
評價:坑爹的麻煩
方案二:
進程間通信,使用管道或者socket進行通信。
評價:坑爹的麻煩
總結:
閑的沒事干你可以試試
B. 基於python開發linux GUI應用,哪個IDE比較好
eclipse很強大。 不過最近我在用sublime text2,這個很喜歡。另外geany我也經常用。vi經常用。再就是python自帶的idle
eclipse有些大。用起有些有不方便。
sublime text2很體貼,小巧 ,適合專業程序員使用。也適合高度較小的屏幕。
geany是相對比較完善的,免費,又普及的,各個平台都有的編輯器。試了不少,最後用這個。
vi是隨處都有,在windows下也值得安裝一個vim
python自帶的idle在windows下好用,在linux下有些慢。不過它比較標准。
wing idle也不錯。商業版好用。
此外,不用的gui開發,也可以使用專用的開發工作。比如eric,再比如boa construct,
komodo?似乎是這個名子,原來也用過。
C. 剛入門 Python,有樹莓派2,如何學習開發嵌入式 GUI
這個不是嵌入式編程,也不是嵌入式的GUI。樹莓派上跑各種操作系統。如果想做GUI最好用它推薦的那個debian改過來的操作系統,那個比較快。
如果想開發一個「復雜」的GUI。 而且又是新手。 那麼我建議你走WEB方式。 WEB方式可以開發復雜的界面,而且學習曲線比較平。 也容易學。
如果想用窗口界面開發。pyqt入門容易,想開發「復雜」的界面,學習成本有些高。 相對來講wxWindows還要容易些。
雖然我本人經常使用pyqt,不過它真的不太容易使用的一個GUI。相比windows下開發GUI要難100倍。
象你描述那邊復雜的過渡動畫,還有界面元素樣式,建議你用WEB,使用html5, javascript, node.js還有bootstrap。絕對不要走pyqt或者是wxwindows的路線。因為成本太高了。學習速度也慢。
pyqt的唯一好處就是,它不依賴於瀏覽器。可以開發獨立的桌面程序。通常由專業程序員開發一個界面框架,一勞永逸。
另外再補充一下。如果你想在樹莓派上開發類似車載智能系統的東西。建議你用android。
D. 在python gui編程怎麼運行
#-*- coding: gbk -*-
#載入有需要的Qt庫
from PyQt4 import QtCore, QtGui
#從ui_test.py文件中讀取Ui_Dialog類,Ui_Dialog類由pyuic4生成
from ui_test import Ui_Dialog
#繼承的類要和生成的ui對相
class Ui(QtGui.QDialog):
def __init__(self, parent=None):
super(Ui, self).__init__(parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Ui()
window.show()
sys.exit(app.exec_())
E. python 編寫gui界面有哪些
安裝wxPython
下面是特別基礎的使用方法,將以一個小程序為例來說明,它的功能是在一個文本框中輸入文件名,點擊open按鈕,會在另一個文本框中顯示其內容,可以進行修改,點擊save可以保存修改。
wxPython的使用簡介
創建應用程序對象:wx.App()
app=wx.App()
app.MainLoop()
窗口/框架:wx.Frame()
win=wx.Frame(None,title='example')
win.Show()
組件
按鈕:wx.Button()
文本控制項:wx.TextCtrl()
尺寸器的構建函數:wx.BoxSizer()
Add方法
- #coding=utf-8
- import wx
- #設置函數
- def load(event):
- f=open(filename.GetValue(),'r')
- content.SetValue(f.read())
- f.close()
- def save(event):
- f=open(filename.GetValue(),'w')
- f.write(content.GetValue())
- f.close()
- app=wx.App()
- win=wx.Frame(None,title='simple editor',size=(410,330))
- bkg=wx.Panel(win)
- loadbutton=wx.Button(bkg,label='Open')
- loadbutton.Bind(wx.EVT_BUTTON,load)
- savebutton=wx.Button(bkg,label='Save')
- savebutton.Bind(wx.EVT_BUTTON,save)
- filename=wx.TextCtrl(bkg)
- content=wx.TextCtrl(bkg,style=wx.TE_MULTILINE|wx.HSCROLL)
- hbox=wx.BoxSizer()
- hbox.Add(filename,proportion=1,flag=wx.EXPAND)
- hbox.Add(loadbutton,proportion=0,flag=wx.LEFT,border=5)
- hbox.Add(savebutton,proportion=0,flag=wx.LEFT,border=5)
- vbox=wx.BoxSizer(wx.VERTICAL)
- vbox.Add(hbox,proportion=0,flag=wx.ALL,border=5)
- vbox.Add(content,proportion=1,flag=wx.EXPAND|wx.ALL,border=5)
- bkg.SetSizer(vbox)
- win.Show()
- app.MainLoop()`
關鍵字label設置標簽:
btn=wx.Button(win,label='open')
綁定事件:
btn.Bind(wx.EVT_BUTTON,load)
關鍵字style有wx.TE_MULTILINE(垂直滾動條),wx.HSXROLL(水平滾動條):
filename=wx.TextCtrl(win,style=wx.TE_MULTILINE|wx.HSXROLL)
同時我們可以在讀取或者寫入其內容:
filename.GetValue() filename.SetValue('string')
布局:使用尺寸器(sizer)
wx.BoxSizer的原理是創建一個箱子一樣的東西,只能橫著或者豎著放組件,一個一個的加進去,除了基本大小外其餘空間按比例分配。加完一行行的箱子後,創建一個豎著的箱子,將這些橫著的箱子(也可以是其他組件)加進去。
*背景組件:wx.Panel()
以窗口為參數構建,所有的組件依附其上,在設置完尺寸器後,使用bkg.SetSizer(box)
有一個決定它是垂直還是水平的參數(wx.HORIZONTAL水平,wx.VERTICAL垂直),默認為水平。
box=wx.BoxSizer(wx.VERTICAL)
proportion參數決定這個組件在剩餘空間中的分配比例,flag參數有wx.EXPAND(會確保組件會擴展到分配的空間里),wx.LEFT,wx.RIGHT,wx.TOP,wx.BOTTOM,wx.ALL(這五個決定邊框參數會應用到那個邊),border參數會確定邊框的大小。
完整版的源代碼如下:
F. python3 gui編程 哪個好
Python本身語法優美, 但一旦到了GUI就醜陋得不行.
wxPython PyQT都要用一種不夠優美的方式來描述GUI.
而且你有個很尷尬的問題, 要不要學一個你根本無法掌控的工具?
你花了錢買了本 wxPython in Action, 學熟練了. 這好了. Py3來了. 社區更新不到. 甚至哪天項目作者掛了, 參見web.py, 你怎麼辦? 雖然肯定會有大牛去接手, 但效率呢? 你本質上不是在學習GUI編程, 而是在學習如何使用工具.
就是說, 你學這些GUI, 根本上就是將自己綁定在了上面. Python最為人詬病的地方就是, Python 永遠要依靠別的庫來擴展, 沒有一種完全意義上的獨立性. 如果真能做到Java那種程度, 獨立不獨立也無所謂了.
所以, 我個人建議, 在這個不是桌面為王的時代. 買本HTML5的書, 用Python的WEB框架, 建立一個本地伺服器..雖然說又要學HTML5很麻煩, 但相比於用桌面各種各樣的GUI描述語言, HTML那種標簽化設計已經簡單很多了. 你完全不需要管理內存, 不需要擔心非同步的處理. 為下一步的在線化鋪平道路.
Python是什麼都能做一點, 但什麼都有替代品. 那就要發揮Python的優勢, 整合資源啊! 將GUI的渲染交給瀏覽器. 將邏輯的處理交給Python.
Python+HTML5+JS+Python框架使用經驗, 對未來也有好處.
你需要做的, 就是寫好一個模板, 然後用框架表現出來.
G. 如何學習 Python GUI 編程
我始終認為,對一個初學者來說,IT界的技術風潮是不可以追趕的,而且也沒有能力去追趕。我時常看見自己的DDMM們把課本扔了,去賣些價格不菲的諸如C#, VB.Net 這樣的大部頭,這讓我感到非常痛心。而許多搞不清指針是咋回事的BBS站友眉飛色舞的討論C#裡面可以不用指針等等則讓我覺得好笑。C#就象當年的ASP一樣,「忽如一夜春風來,千樹萬樹梨花開」,結果許多學校的信息學院成了「Web 學院」。96,97級的不少大學生都去做Web 了。當然我沒有任何歧視某一行業的意識。我只是覺得如果他們把追趕這些時髦技術的時間多花一點在基礎的課程上應該是可以走得更遠的。 幾個誤區 初學者對C#風潮的追趕其實也只是學習過程中經常遇到的幾個誤區之一。我將用一些實際的例子來說明這些現象,你可以按部就班的看看自己是不是屬於其中的一種或者幾種: 認為計算機技術等於編程技術: 有些人即使沒有這個想法,在潛意識中也有這樣的沖動。讓我奇怪的是,許多信息學院的學生也有這樣的念頭。認為計算機專業就是編程專業,與編程無關的,或者不太相關的課程他統統都不管,極端的學生只要書上沒帶「編程」兩個字他就不看。 其實編程只是計算機技術應用過程中一種復雜性最低的勞動,這就是為什麼IT業最底層的人是程序員(CODER)。計算機技術包括了多媒體,計算機網路,人工智慧,模式識別,管理信息系統等等這些方面。編程工作只是在這些具體技術在理論研究或者工程實踐的過程中表達演算法的過程。編程的人不一定對計算機技術的了解就一定很高。而一個有趣的現象是,不少大師級的計算機技術研究者是不懂編程的。網上的炒作和現實中良好的工作待遇把編程這種勞動神秘化了。其實每一個程序員心裡都明白,自己這些東西,學的時候並不比其它專業難,所以自然也不會高檔到哪裡去。 咬文嚼字的孔已己作風: 我見過一本女生的《計算機網路原理》教材,這個女生象小學生一樣在書上劃滿了橫杠杠,筆記做得滿滿的,列印出來一定比教材還厚。我不明白的是,象計算機網路原理這樣的課程有必要做筆記?我們的應試教育的確害了不少學生,在上《原理》這一類課程的時候許多學生象學《馬列原理》一樣逐字背誦記憶。這乃是我見過的最愚蠢的行為。所謂《原理》,即是需要掌握它為什麼這樣做,學習why,而不是how(怎樣做)。極端認真的學生背下乙太網的網線最大長度,數據幀的長度,每個欄位的意義,IP報頭的格式等等,但是忘了路由的原則,忘了TCP/IP協議設計的宗旨。總之許多人花了大量的時間把書背得滾瓜爛熟卻等於什麼也沒學。 在學習編程的時候這些學生也是這樣,他們確切的記得C++語法的各個細節。看完了C++教程後看《Thinking in C++》(確實是好書),《Inside C++》,《C++ reference》,this C++, that C++……,然後是網上各種各樣的關於C++語法的奇聞逸事,然後發現自己又忘了C++的一些語法,最後回頭繼續惡補…。有個師弟就跟我說:「C++ 太難了,學了這里忘了那裡,學了繼承忘了模板。」我的回答道:「你不去學就容易了」。我並沒有教壞他,只是告訴他,死摳C++的語法就和孔已己炫耀茴香豆的茴字有幾種寫法一樣毫無意義。你根本不需要對的C++語法太關心,動手編程就是了,有不記得的地方一查MSDN就立馬搞定。我有個結論就是,實際的開發過程中對程序語法的了解是最微不足道的知識。這是為什麼我在為同學用Basic(我以前從沒有學過它)寫一個小程序的時候,只花了半個小時看了看語法,然後再用半個小時完成了程序,而一個小時後我又完全忘記了Basic 的所有關鍵字。 不顧基礎,盲目追趕時髦技術: ; 終於點到題目上來了。大多數的人都希望自己的東西能夠馬上跑起來,變成錢。這種想法對一個已經進入職業領域的程序員或者項目經理來說是合理的,而且IT技術進步是如此的快,不跟進就是失業。但是對於初學者來說(尤其是時間充裕的大中專在校生),這種想法是另人費解的。一個並未進入到行業競爭中來的初學者最大的資本便是他有足夠的時間沉下心來學習基礎性的東西,學習why 而不是how。時髦的技術往往容易掌握,而且越來越容易掌握,這是商業利益的驅使,為了最大化的降低軟體開發的成本。但在IT領域內的現實就是這樣,越容易掌握的東西,學習的人越多,而且淘汰得越快。每一次新的技術出來,都有許多初學者跟進,這些初學者由於缺乏必要的基礎而使得自己在跟進的過程中花費大量的時間,而等他學會了,這種技術也快淘汰了。基礎的課程,比方數據結構,*作系統原理等等雖然不能讓你立馬就實現一個linux(這是許多人嘲笑理論課程無用的原因),但它們能夠顯著的減少你在學習新技術時學習曲線的坡度。而且對於許多關鍵的技術(比方Win32 SDK 程序的設計,DDK的編程)來說甚至是不可或缺的。 一個活生生的例子是我和我的一個同學,在大一時我還找不到開機按紐,他已經會寫些簡單的匯編程序了。我把大二的所有時間花在了匯編,計算機體系結構,數據結構,*作系統原理等等這些課程的學習上,而他則開始學習HTML和VB,並追趕ASP的潮流。大三的時候我開始學習Windows *作系統原理,學習SDK編程,時間是漫長的,這時我才能夠用VC開發出象模象樣的應用程序。我曾一度因為同學的程序已經能夠運行而自己還在學習如何創建對話框而懊惱不已,但臨到畢業才發現自己的選擇是何等的正確。和我談判的公司開出的薪水是他的兩倍還多。下面有一個不很恰當的比方:假設學習VB編程需要4個月,學習基礎課程和VC的程序設計需要1年。那麼如果你先學VB,再來學習後者,時間不會減少,還是1年,而反過來,如果先學習後者,再來學VB,也許你只需要1個星期就能學得非常熟練。 幾個重要的基礎課程 如果你是學生,或者如果你有充足的時間。我建議你仔細的掌握下面的知識。我的建議是針對那些希望在IT技術上有所成就的初學者。同時我還列出了一些書目,這些書應該都還可以在書店買到。說實在的,我在讀其他人的文章時最大的心願就是希望作者列出一個書單。 大學英語-不要覺得好笑。我極力推薦這門課程是因為沒有專業文檔的閱讀能力是不可想像的。中文的翻譯往往在猴年馬月才會出來,而現在的許多出版社乾脆就直接把E文印刷上去。學習的方法是強迫自己看原版的教材,開始會看不懂,用多了自然熟練。吃得苦下得狠心絕對是任何行業都需要的品質。 計算機體系結構和匯編語言-關於體系結構的書遍地都是,而且也大同小異,倒是匯編有一本非常好的書。《80x86匯編語言程序設計教程》(清華大學出版社,黑色封面,楊季文著)。你需要著重學習386後保護模式的程序設計。否則你在學習現代*作系統底層的一些東西的時候會覺得是在看天書。 計算機*作系統原理-我們的開發總是在特定的*作系統上進行,如果不是,只有一種可能:你在自己實現一個*作系統。無論如何,*作系統原理是必讀的。這就象我們為一個晶元製作外圍設備時,晶元基本的工作時序是必需了解的。這一類書也很多,我沒有發現哪一本書非常出眾。只是覺得在看完了這些書後如果有空就應該看看《Inside Windows 2000》(微軟出版社,我看的是E文版的,中文的書名想必是Windows 2000 技術內幕之類吧)。關於學習它的必要性,ZDNET上的另一篇文章已經有過論述。 數據結構和演算法-這門課程能夠決定一個人程序設計水平的高低,是一門核心課程。我首選的是清華版的(朱戰立,劉天時)。很多人喜歡買C++版的,但我覺得沒有必要。C++的語法讓演算法實現過程變得復雜多了,而且許多老師喜歡用模塊這一東西讓演算法變得更復雜。倒是在學完了C版的書以後再來瀏覽一下C++的版的書是最好的。 軟體工程-這門課程是越到後來就越發現它的重要,雖然剛開始看時就象看馬哲一樣不知所雲。我的建議是看《實用軟體工程》(黃色,清華)。不要花太多的時間去記條條框框,看不懂就跳過去。在每次自己完成了一個軟體設計任務(不管是練習還是工作)以後再來回顧回顧,每次都會有收獲。 Windows 程序設計-《北京大學出版社,Petzold著》我建議任何企圖設計Windows 程序的人在學習VC以前仔細的學完它。而且前面的那本《Inside Windows 2000》也最好放到這本書的後面讀。在這本書中,沒有C++,沒有GUI,沒有控制項。有的就是如何用原始的C語言來完成Windows 程序設計。在學完了它以後,你才會發現VC其實是很容易學的。千萬不要在沒有看完這本書以前提前學習VC,你最好碰都不要碰。我知道的許多名校甚至都已經用它作為教材進行授課。可見其重要。 上面的幾門課程我認為是必學的重要課程(如果你想做Windows 程序員)。 對於其它的課程有這樣簡單的選擇方法:如果你是計算機系的,請學好你所有的專業基礎課。如果不是,請參照計算機系的課程表。如果你發現自己看一本書時無法看下去了,請翻到書的最後,看看它的參考文獻,找到它們並學習它們,再回頭看這本書。如果一本書的書名中帶有「原理」兩個字,你一定不要去記憶它其中的細節,你應該以一天至少50頁的速度掌握其要領。盡可能多的在計算機上實踐一種理論或者演算法。 你還可以在CSDN上閱讀到許多書評。這些書評能夠幫助你決定讀什麼樣的書。 日三省乎己 每天讀的書太多,容易讓人迷失方向。一定要在每天晚上想想自己學了些什麼,還有些什麼相關的東西需要掌握,自己對什麼最感興趣,在一本書上花的時間太長還是不夠等等。同時也應該多想想未來最有可能出現的應用,這樣能夠讓你不是追趕技術潮流而是引領技術潮流。同時,努力使用現在已經掌握的技術和理論去製作具有一定新意的東西。堅持這樣做能夠讓你真正成為一個軟體「研發者」而不僅僅是一個CODER。 把最多的時間花在學習上 這是對初學者最後的忠告。把每個星期玩SC或者CS的時間壓縮到最少,不玩它們是最好的。同時,如果你的ASP技術已經能夠來錢,甚至有公司請你兼職的話,這就證明你的天份能夠保證你在努力的學習之後取得更好的收益,你應該去做更復雜的東西。眼光放長遠一些,這無論是對誰都是適用的。 相信你已經能夠決定是否學習C#或者什麼時候去學它了。
H. python開發的gui漂亮嗎
簡單一點的,玩tkinter
你要做產品,pyQT(pySide)
其他的雖然也有一些,但靠譜的並不多.
如果說好看 當然是pyQT的好看
I. 郁悶於Python GUI開發,有沒有好的框架
Python GUI開發的庫不少.最常用的抄的也就幾個.
Tkinter -Tk是Python自帶的GUI庫, 上手簡單, 做個簡單界面基本夠用了,但是不夠美觀,功能不全面.
wxPython -開源免費, LINUX和WINDOWS跨平台, 界面本地化好, 功能完善, 推薦用用這個.
Pyqt -功能最完善強大, 開發工具給力.它有超過300類,將近6000個函數和方法。它是一個多平台的工具包,可以運行在所有主要操作系統上,包括UNIX,Windows和Mac。 PyQt採用雙許可證,開發人員可以選擇GPL和商業許可。在此之前,GPL的版本只能用在Unix上,從PyQt的版本4開始,GPL許可證可用於所有支持的平台。最推薦用這個
PyGTK -GTK應該聽說過吧, 就是LINUX的GNOME開發的GUI庫, 這個界面在WINDOWS下不是太本地化.
J. Python編寫GUI
你在構造函數中少創建了posCtrl對象,所以當事件發生時會提示沒有posCtrl對象,源代碼應該是這個吧:
1 #!/bin/env python
2 import wx
3 class MyFrame(wx.Frame):
4
5 def __init__(self):
6 wx.Frame.__init__(self, None, -1, "My Frame", size=(300, 300))
7 panel = wx.Panel(self, -1)
8 panel.Bind(wx.EVT_MOTION, self.OnMove)
9 wx.StaticText(panel, -1, "Pos:", pos=(10, 12))
10 self.posCtrl = wx.TextCtrl(panel, -1, "", pos=(40, 10))
11
12 def OnMove(self, event):
13 pos = event.GetPosition()
14 self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y))
15
16 if __name__ == '__main__':
17 app = wx.PySimpleApp()
18 frame = MyFrame()
19 frame.Show(True)
20 app.MainLoop()
參考:http://czug.org/python/wxpythoninaction/ch01.rst