python做gui
㈠ 郁悶於python GUI開發,有沒有好的框架
1、Kivy
Kivy是一個開源工具包能夠讓使用相同源代碼創建的程序能跨平台運行。它主要關注創新型用戶界面開發,如:多點觸應用程序。Kivy還提供了一個多點觸摸滑鼠模擬器。當前支持的平台包括:Linux、windows、Mac OS X和Android。
Kviy擁有能夠處理動畫、緩存、手勢、繪圖等功能。它還內置許多用戶界面控制項如:按鈕、攝影機、表格、Slider和樹形控制項等。
2、Flexx
Flexx是一個純Python工具包,用來創建圖形化界面應用程序。其使用web技術進行界面的渲染。衫悶盯你可以用Flexx來創建桌面應用,同時也可以導出一個應用到獨立的HTML文檔。因為使用純Python開發,所以Flexx是跨平台的。
3、PyQt
PyQt是Qt庫的Python版本。PyQt3支持Qt1到Qt3.PyQt4支持Qt4.它的首次發布也是在1998年,但是當時它叫PyKDE,因為開始的時候SIP和PyQt沒有公開。PyQt是用SIP寫的,PyQt提供GPL版和商業版。
4、wxPython
wxPython是Python語言的一套優秀的GUI圖形庫,允許Python程序員很方便的創建完整的、功能健全的GUI用戶界面。wxPython是作為優秀的跨罩拍平台GUI庫wxWidgets的Python封裝和Python模塊的方式提供給用戶的。
就如同Python和wxWidgets一樣,wxPython也是一款開源軟體,並且具有非常優秀的跨平台能力,能夠運行在32位windows、絕大多數的Unix或類Unix系統、Macintosh OS X上。
5、Tkinter
Tkinter是TK圖形用戶界面工具包標準的Python介面。TK是一個輕量級的跨平台圖形用戶界面開發工具。Tk和Tkinter可以運行在大多數的Unix平台、windows和Macintosh系統。
6、PyGTK
PyGTK讓你用Python輕松創建具有圖形或和用戶界面的程序,底層的GTK+提供了各式的可視元素和功能,如果需要,你能開發在GNOME桌面系統運行的功能完整的軟體。PyGTK真正具有跨平台性,它能不加修改地,穩定運行各種操作系統之上。除了簡單易用和快速的原型開發能力外,PyGTK還有一流的處理本地化語言的獨特功能。
了解更多python知識,推薦選擇【老男孩教育】。
㈡ 如何用 Python 寫一個帶 GUI 的科學計算程序
這個代碼實現的挺簡單,並不是很復雜的科學計算器界面,你可以以此為基礎,添加自己想要的東西:給你個截圖:
#!/usr/bin/envpython3.4
fromTkinterimport*
importparser
root=Tk()
root.title('Calculator')
i=0
deffactorial():
"""."""
whole_string=display.get()
number=int(whole_string)
fact=1
counter=number
try:
whilecounter>0:
fact=fact*counter
counter-=1
clear_all()
display.insert(0,fact)
exceptException:
clear_all()
display.insert(0,"Error")
defclear_all():
""""""
display.delete(0,END)
defget_variables(num):
""""""
globali
display.insert(i,num)
i+=1
defget_operation(operator):
""""""
globali
length=len(operator)
display.insert(i,operator)
i+=length
defundo():
"""removesthelastenteredoperator/variablefromentrywidget"""
whole_string=display.get()
iflen(whole_string):##repeatsuntil
##
new_string=whole_string[:-1]
print(new_string)
clear_all()
display.insert(0,new_string)
else:
clear_all()
display.insert(0,"Error,pressAC")
defcalculate():
"""
Evaluatestheexpression
ref:http://stackoverflow.com/questions/594266/equation-parsing-in-python
"""
whole_string=display.get()
try:
formulae=parser.expr(whole_string).compile()
result=eval(formulae)
clear_all()
display.insert(0,result)
exceptException:
clear_all()
display.insert(0,"Error!")
root.columnconfigure(0,pad=3)
root.columnconfigure(1,pad=3)
root.columnconfigure(2,pad=3)
root.columnconfigure(3,pad=3)
root.columnconfigure(4,pad=3)
root.rowconfigure(0,pad=3)
root.rowconfigure(1,pad=3)
root.rowconfigure(2,pad=3)
root.rowconfigure(3,pad=3)
display=Entry(root,font=("Calibri",13))
display.grid(row=1,columnspan=6,sticky=W+E)
one=Button(root,text="1",command=lambda:get_variables(1),font=("Calibri",12))
one.grid(row=2,column=0)
two=Button(root,text="2",command=lambda:get_variables(2),font=("Calibri",12))
two.grid(row=2,column=1)
three=Button(root,text="3",command=lambda:get_variables(3),font=("Calibri",12))
three.grid(row=2,column=2)
four=Button(root,text="4",command=lambda:get_variables(4),font=("Calibri",12))
four.grid(row=3,column=0)
five=Button(root,text="5",command=lambda:get_variables(5),font=("Calibri",12))
five.grid(row=3,column=1)
six=Button(root,text="6",command=lambda:get_variables(6),font=("Calibri",12))
six.grid(row=3,column=2)
seven=Button(root,text="7",command=lambda:get_variables(7),font=("Calibri",12))
seven.grid(row=4,column=0)
eight=Button(root,text="8",command=lambda:get_variables(8),font=("Calibri",12))
eight.grid(row=4,column=1)
nine=Button(root,text="9",command=lambda:get_variables(9),font=("Calibri",12))
nine.grid(row=4,column=2)
cls=Button(root,text="AC",command=clear_all,font=("Calibri",12),foreground="red")
cls.grid(row=5,column=0)
zero=Button(root,text="0",command=lambda:get_variables(0),font=("Calibri",12))
zero.grid(row=5,column=1)
result=Button(root,text="=",command=calculate,font=("Calibri",12),foreground="red")
result.grid(row=5,column=2)
plus=Button(root,text="+",command=lambda:get_operation("+"),font=("Calibri",12))
plus.grid(row=2,column=3)
minus=Button(root,text="-",command=lambda:get_operation("-"),font=("Calibri",12))
minus.grid(row=3,column=3)
multiply=Button(root,text="*",command=lambda:get_operation("*"),font=("Calibri",12))
multiply.grid(row=4,column=3)
divide=Button(root,text="/",command=lambda:get_operation("/"),font=("Calibri",12))
divide.grid(row=5,column=3)
#addingnewoperations
pi=Button(root,text="pi",command=lambda:get_operation("*3.14"),font=("Calibri",12))
pi.grid(row=2,column=4)
molo=Button(root,text="%",command=lambda:get_operation("%"),font=("Calibri",12))
molo.grid(row=3,column=4)
left_bracket=Button(root,text="(",command=lambda:get_operation("("),font=("Calibri",12))
left_bracket.grid(row=4,column=4)
exp=Button(root,text="exp",command=lambda:get_operation("**"),font=("Calibri",10))
exp.grid(row=5,column=4)
##Tobeadded:
#sin,cos,log,ln
undo_button=Button(root,text="<-",command=undo,font=("Calibri",12),foreground="red")
undo_button.grid(row=2,column=5)
fact=Button(root,text="x!",command=factorial,font=("Calibri",12))
fact.grid(row=3,column=5)
right_bracket=Button(root,text=")",command=lambda:get_operation(")"),font=("Calibri",12))
right_bracket.grid(row=4,column=5)
square=Button(root,text="^2",command=lambda:get_operation("**2"),font=("Calibri",10))
square.grid(row=5,column=5)
root.mainloop()
㈢ python 編寫gui界面有哪些
安裝wxPython
下面是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參數會確定邊框的大小。
完整版的源代碼如下:
㈣ 可以用易語言設計gui,python寫代碼嗎
理論上是可以的,可以嵌入一個python的解釋器來被調用運行python的代碼。
但是直接用python 設計GUI現寫代碼不是更好么。
python有多個GUI庫的。
通常python自帶一個簡易的TKinter庫,做個簡單的窗口應用就夠了。
wxPython是Python語言的另一套優秀的GUI圖形庫
PyQt是一個創建GUI應用程序的工具包。它是Python編程語言和Qt庫的成功融合。Qt庫是目前最強大的庫之一。
㈤ 如何用python做一個顯示文件目錄的GUI
我以前寫過一個替換exe文件的工具,右側使用treeCtrl結構顯示的目錄樹(顯示py文件所在的目錄的文件結構),拖拽文件到左側,然後會自動替換py文件所在的目錄下面的同名文件。你不會用到替換這個功能,但是目錄顯示已經很完善了。源碼如下,由於會使用個別ICON文件(一般ICON使用系統自帶的,看下面預覽,exe和folder還有未知文件我自定義了一下),運行時請使用壓縮包裡面的py文件運行。我使用wx2.9寫的,2.8估計也可以。歡迎PM。(代碼太長了,不讓貼 - -)
㈥ 如何使用pyQT做pythonGUI界面
首先,如果沒有安裝python和PyQt軟體的請先直接搜索下載並安裝。python是一個開源軟體,因此都是可以在網上免費下載的,最新版本即可。下載完成後,我們先打開PyQt designer。
2
打開後,首先是一個默認的新建窗口界面,在這里我們就選擇默認的窗口即可。
3
現在是一個完全空白的窗口。第一步我們要先把所有的設計元素都拖進這個窗口。我們先拖入一個「Label」,就是一個不可編輯的標簽。
4
隨後我們再拖入一個可以編輯的「Line Edit」
5
最後我們拖入最後一個元素:「PushButton」按鈕,也就是平時我們所點的確定。
6
目前我們已經把所有所需要的元素都拖入了新建的窗口。對於每一個元素,我們都可以雙擊進行屬性值的修改,此時我們僅需要雙擊改個名字即可
7
此時我們已經完成了一半,接下來需要對動作信號進行操作。我們需要先切入編輯信號的模式
8
此時把滑鼠移動到任意元素,都會發現其變成紅色,代表其被選中。
9
當我們選中pushbutton後,繼續拖動滑鼠指向上面的line edit,會發現由pushbutton出現一個箭頭指向了line edit,代表pushbutton的動作會對line edit進行操作。
10
隨即會彈出一個配置連接窗口。左邊的是pushbutton的操作,我們選擇clicked(),即點擊pushbutton。
右邊是對line edit的操作,我們選擇clear(),即清楚line edit中的內容。
最後我們點擊確定。
保存完成後,我們在PyQt中的操作就已經完成了。保存的文件名我們命名為test,PyQt生成的設計文件後綴是.ui。
然後我們需要把.ui文件轉換成可編譯的.py文件,我們需要用到PyQt提供的pyuic4命令來完成轉換。這是一個DOS命令,因此我們需要調出DOS操作界面。打開開始菜單,找到附件中的運行。
在運行中輸入cmd,確定後即可打開DOS界面。
在DOS界面下,我們需要定位到剛才保存的.ui文件的位置,如果是默認的話,會保存在C:\Python27\Lib\site-packages\PyQt4,定位的過程如圖所示。轉換成.py文件的命令是:pyuic4 test.ui -o test.py
轉換命令執行後,會生成一個test.py的文件,如圖所示
最後我們需要對生成的python文件加入頭文件和主函數,就可以生成一個完整的GUI程序了!首先是在整個程序的最開頭加入import sys,如圖所示。
另外,在程序的末尾,加入如圖所示的主函數代碼。主函數會調用我們再PyQt里已經完成的生成元素的函數以及配置連接函數,因此我們只需要加上主函數來調用他們即可。
保存後,雙擊我們編輯完成的python文件,就會彈出我們剛才設計的GUI界面啦!這就是我們所完成的第一個用python語言寫的GUI程序啦!
㈦ python gui 哪個簡單
較為常用的GUI工具
Tkinter
可以在大多數的Unix平台下使用,
同樣可以應用在Windows和Mac系統里。Tk8.0的後續版本可以實現本地窗口風格,並良好地運行在絕大多數平台中。
優點:是Python的內置庫,無需額外下載,不存在兼容問題,且又非常詳細的說明文檔。
缺點:實現效果較為普通。
wxPython
是一個創建桌面GUI應用的跨平台工具包,它的主要開發者是Robin
Dunn。使用wxPython,開發者可以在Windows、Mac和多種Unix系統上開發應用程序。
優點:是一個免費的,可移植的GUI類庫,用C++編寫,可在Windows,Mac OS
X,GTK,X11等許多平台上使用。可用於多種語言,包括Python,Perl,Ruby等。
缺點:設計的界面美觀程度和靈活性較為普通。
PyQT
是Qt框架的Python語言實現,也是最強大的GUI庫之一。
PyQt提供了一個設計良好的窗口控制項集合,每一個PyQt控制項都對應一個Qt控制項,因此PyQt的API介面與Qt的API介面很接近,但PyQt不再使用QMake系統和Q_OBJECT宏。
優點:功能非常強大,可以用PyQt5開很漂亮的界面;另外它支持可視化界面設計,對新手非常友好,可以通過拖動一些模塊就可以完成一些代碼才能完成的工作,就跟C++的QT是一樣的。
缺點:學習起來有一定難度。
PyGtk
優點:跟PyQt一樣,可以實現很不錯的效果,但是稍遜於PyQt,並且同樣有UI設計工具Glade。
缺點:更適合GNOME平台。
Kivy
優點:是一個開源的Python框架,用於快速開發應用,實現各種當前流行的用戶界面,比如多點觸摸等等,可以運行於Windows,Linux, MacOS,
Android,
iOS等當前絕大部分主流桌面/移動端操作系統。Kivy基於Python,界面文件和程序文件相互分離的設計思路,設計簡潔優雅,語法易學,適合新人入門。
缺點:只有一個中文文檔還是特別全面,大多數教程還是英文版本。
㈧ Python製作簡單的GUI界面,實現批量修改excel文件特定行列單元格
PySimpleGUI 實例
㈨ python開發的gui漂亮嗎
簡單一點的,玩tkinter
你要做產品,pyQT(pySide)
其他的雖然也有一些,但靠譜的並不多.
如果說好看 當然是pyQT的好看