導航:首頁 > 編程語言 > python的gui背景編程

python的gui背景編程

發布時間:2023-01-11 09:56:16

A. python的GUI設計用什麼軟體

pyqt還不錯,它是Python語言的GUI編程解決方案之一。可以用來代替Python內置的Tkinter。其它替代者還有PyGTK、wxPython等

優點:
PyQt的API與Qt類似,Qt的文檔通常仍然可以應用於PyQt。因此,PyQt的文檔比PyGTK、wxPython、Tkinter等GUI編程庫的文檔豐富得多。
如果程序員具備使用Qt的經驗,一般很快就可以過渡到PyQt上。而使用PyQt的程序員,如果同時精通C++的話,也可以很快地過渡到Qt平台上。
利用SIP,大多數為Qt開發的控制項可以方便地port到PyQt。——然而,SIP也需要一些學習成本。
有方便的周邊工具支持PyQt。如QtDesigner,可以使用拖拉式的方法來設計界面,簡單易用。Eric4,一個使用PyQt設計的Python IDE,對PyQt有特殊的支持。

缺點:
由於PyQt同時使用Qt以及Python的兩種內存管理方法,所以在使用PyQt的過程中要注意避免內存泄露以及懸掛指針[4]。
運行時龐大,在Windows平台,只使用PyQt.QtCore與PyQt.QtGui兩個子模塊時,壓縮後至少需要4.09M
需要學習一些C++知識,主要是C++類型、內存管理兩個方面,以便於閱讀Qt文檔和理解PyQt的行為

B. python 編寫gui界面有哪些

安裝wxPython

下面是wxPython特別基礎的使用方法,將以一個小程序為例來說明,它的功能是在一個文本框中輸入文件名,點擊open按鈕,會在另一個文本框中顯示其內容,可以進行修改,點擊save可以保存修改。

wxPython的使用簡介

創建應用程序對象:wx.App()

app=wx.App()
app.MainLoop()

窗口/框架:wx.Frame()

win=wx.Frame(None,title='example')
win.Show()

組件

C. 如何用 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()

D. 如何使用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程序啦!

E. Python GUI項目實戰(二)主窗體的界面設計與實現

上一節我們介紹了登錄窗體的GUI設計與功能實現,用戶的賬號和密碼校驗完成後應當跳轉到主窗體內容,這一節我們將具體介紹主窗體界面的設計與功能實現!

我們新建一個900x640的窗口,頂部加入圖片,下面主體部分創建兩個Panedwindow容器,左邊添加按鈕,右邊作為TreeView顯示界面;

顯示效果:(注意:tkinter在Mac上Panedwindow不支持修改前景色背景色)

在右邊的Pannedwindow容器中,添加一個LabelFrame容器作為查詢區域,在LabelFrame容器中添加一系列的Label、Entry、Button控制項,可以輸入學號、姓名、電話、身份證、查詢、和顯示全部信息:

顯示效果:

創建控制項、設置對齊方式和每個列的標題

顯示效果:

登錄成功後,在頂部顯示用戶姓名和登錄時間,用戶姓名是怎麼來的?是我們在登錄窗口輸入的,所以這就涉及到了跨窗體數據的傳遞。這一點非常重要!
登錄窗體(登錄信息)==>主窗體
傳遞的基本方式:構造函數
在主窗體的構造函數中添加一個接收參數 current_user ,在登錄窗體載入新窗體時將參數傳遞進去;
但是我們登錄窗體的登錄函數 login() 中用戶名的變數 user 是局部變數,函數調用完了之後就變數就沒有了,那怎麼調用呢?
我們需要在登錄窗體的構造函數中定義全局變數:

為了獲取用戶登錄的時間,我們定義一個獲取當前時間的方法:

然後在載入主窗體時將參數 self.user 和 self.get_now_time() 作為參數傳遞進去

另一邊,我們在主窗體中,在構造函數中添加全局變數

之後,我們在Top_banner中通過標簽將user信息展示出來:

這樣主窗口就會顯示通過登錄窗口登錄的用戶名(首字母自動轉大寫)和登錄時間:
效果演示:

然後我們在構造方法中把這個函數寫入,以實現自動把學生信息寫入到all_student_list中

文件中讀取到的學生信息存儲到all_student_list列表,以此作為參數傳入載入TreeView的方法中;

在構造方法中調用該方法,自動把所有學生信息載入到TreeView中

運行效果:

這一節我們實現了主窗體的搭建,從界面的布局到TreeView載入全部學生信息。學生數據如此之多,如果我們想精確查看具體某個學生的信息該怎麼做呢?下一講,我們將實現學生信息的查詢功能,敬請期待吧~

F. 如何用Python語言編寫GUI程序

python內置的tkinter啊、或者wxPython啊、QTpy啊,很多GUI庫。

G. Python如何進行GUI桌面開發有哪些不錯的庫可以推薦

Python進行GUI開發的庫其實很多,下面我簡單介紹幾個不錯的庫,感興趣的朋友可以自己嘗試一下,實驗環境win10+python3.6+pycharm5.0,主要內容如下:
tkinter
這個就不用多說了,python自帶的GUI開發標准庫,對於開發小型簡單的應用來說,完全可以了,開源、跨平台,使用起來非常方便,下面我簡單測試一下,主要代碼如下:

點擊運行程序,效果如下,一個窗口一個Label標簽:

easygui
這個是基於tkinter的一個窗口GUI庫,可以快速創建窗口對話框,包括常見的登陸對話框、注冊對話框等,下面我簡單介紹一下這個庫的安裝和使用:

1.首先,安裝easygui,這個直接在cmd窗口輸入安裝命令「pip install easygui」就行,如下:

2.安裝完成後,我們就可以直接編寫代碼進行測試了,主要代碼如下,非常簡單:

點擊運行這個程序,效果如下:

kivy
這是一個跨平台的GUI應用程序開發庫,可以用來開發安卓、蘋果應用,一套程序,可以處處運行,下面我簡單介紹一下這個庫的安裝和使用:

1.首先,安裝kivy,這個直接按官方教程安裝就行,如下:

2.安裝完成後,就可以直接編寫代碼進行測試了,主要代碼如下,非常簡單:

點擊運行程序,效果如下,這里你可以將其打包為手機應用,安裝到手機上:

wxpython
這也是一個免費、跨平台的Python GUI開發庫,相比較前面的tkinter來說,功能更為強大,控制項也更多,下面我簡單介紹一下這個庫的安裝和使用:

1.首先,安裝wxpython,這個也直接在cmd窗口輸入命令「pip install wxpython」就行,如下:

2.安裝完成後,我們就可以直接編寫相關代碼進行測試了,主要代碼如下,非常簡單,一個簡單的文本編輯器:

點擊運行這個程序,效果如下:

pyqt
這個Qt的一個Python介面庫,藉助於Qt強大的用戶界面,Python也可以快速開發出GUI程序,組件更多,也更方便,只要你有一定的Qt基礎,很快就能掌握這個庫的使用,下面我簡單介紹一下這個庫的安裝和使用:

1.首先,安裝pyqt,這個直接在cmd窗口輸入安裝命令「pip install pyqt5」就行,如下,安裝需要稍微等待一會兒:

2.安裝完成後,我們就可以直接編寫代碼進行測試了,如下,一個簡單的計算器:

點擊運行這個程序,效果如下:

至此,我們就介紹完了這5個Python GUI庫。總的來說,這5個庫使用起來都非常不錯,如果你的應用界面比較簡單,功能要求不高,可以選擇tkinter和easygui,如果界面比較復雜,功能要求比較復雜,可以考慮使用wxpython或pyqt,當然,你也可以使用其他GUI庫,像pygame等,根據實際項目需求而定,網上也有相關資料和教程,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言。

python簡單的GUI界面化的有內置的模塊tkinter相對來說簡單,但是做出來的界面也簡單。目前市場上用的多的還是QT吧!python有的QT是pyqt5當前使用比較多。如果用的pycharm開發工具也可以進行配置進行開發,最好的用eric專門開發PYQT的軟體。

H. 如何使用python寫gui編輯器

自帶編輯器python IDE(GUI):
python IDE(GUI)是交互環境下進行的,有相應的提示符「>>>」。程序員寫一句,按下enter後,就會回應一句,出現「>>>」.
若要按照正常的敲代碼換行,就按ctrl+n 自動創建一個編輯文件,編輯好後,再F5執行就可以了;或者在python IDE(GUI)的窗口中的File->New Window創建。

I. Python 中用 Tkinter GUI編程

可以使用sqlite,下面是使用方法。

  1. 導入PythonSQLITE資料庫模塊

Python2.5之後,內置了SQLite3,成為了內置模塊,這給我們省了安裝的功夫,只需導入即可~

importsqlite3


2.創建/打開資料庫


在調用connect函數的時候,指定庫名稱,如果指定的資料庫存在就直接打開這個資料庫,如果不存在就新創建一個再打開。


cx=sqlite3.connect("E:/test.db")

也可以創建資料庫在內存中。

con=sqlite3.connect(":memory:")

3.資料庫連接對象


打開資料庫時返回的對象cx就是一個資料庫連接對象,它可以有以下操作:


commit()--事務提交


rollback()--事務回滾

close()--關閉一個資料庫連接

cursor()--創建一個游標


關於commit(),如果isolation_level隔離級別默認,那麼每次對資料庫的操作,都需要使用該命令,你也可以設置isolation_level=None,這樣就變為自動提交模式。

4.使用游標查詢資料庫


我們需要使用游標對象SQL語句查詢資料庫,獲得查詢對象。通過以下方法來定義一個游標。


cu=cx.cursor()

游標對象有以下的操作:

execute()--執行sql語句

executemany--執行多條sql語句

close()--關閉游標

fetchone()--從結果中取一條記錄,並將游標指向下一條記錄

fetchmany()--從結果中取多條記錄

fetchall()--從結果中取出所有記錄

scroll()--游標滾動


1.建表

cu.execute("createtablecatalog(idintegerprimarykey,pidinteger,namevarchar(10)UNIQUE,nicknametextNULL)")


上面語句創建了一個叫catalog的表,它有一個主鍵id,一個pid,和一個name,name是不可以重復的,以及一個nickname默認為NULL。


2.插入數據


請注意避免以下寫法:


#Neverdothis--insecure會導致注入攻擊


pid=200

c.execute("...wherepid='%s'"%pid)

正確的做法如下,如果t只是單個數值,也要採用t=(n,)的形式,因為元組是不可變的。

fortin[(0,10,'abc','Yu'),(1,20,'cba','Xu')]:

cx.execute("insertintocatalogvalues(?,?,?,?)",t)

簡單的插入兩行數據,不過需要提醒的是,只有提交了之後,才能生效.我們使用資料庫連接對象cx來進行提交commit和回滾rollback操作.

cx.commit()


3.查詢

cu.execute("select*fromcatalog")


要提取查詢到的數據,使用游標的fetch函數,如:


In[10]:cu.fetchall()

Out[10]:[(0,10,u'abc',u'Yu'),(1,20,u'cba',u'Xu')]

如果我們使用cu.fetchone(),則首先返回列表中的第一項,再次使用,則返回第二項,依次下去.


4.修改

In[12]:cu.execute("updatecatalogsetname='Boy'whereid=0")

In[13]:cx.commit()

注意,修改數據以後提交


5.刪除


cu.execute("deletefromcatalogwhereid=1")

cx.commit()


6.使用中文

請先確定你的IDE或者系統默認編碼是utf-8,並且在中文前加上u


x=u'魚'

cu.execute("updatecatalogsetname=?whereid=0",x)

cu.execute("select*fromcatalog")

cu.fetchall()

[(0,10,u'u9c7c',u'Yu'),(1,20,u'cba',u'Xu')]

如果要顯示出中文字體,那需要依次列印出每個字元串


In[26]:foritemincu.fetchall():

....:forelementinitem:

....:printelement,

....:print

....:

010魚Yu

120cbaXu


7.Row類型

Row提供了基於索引和基於名字大小寫敏感的方式來訪問列而幾乎沒有內存開銷。原文如下:

sqlite3.Rowprovidesbothindex-basedandcase-insensitivename-.-basedapproachorevenadb_rowbasedsolution.

Row對象的詳細介紹


classsqlite3.Row

_factoryforConnectionobjects..


,iteration,representation,equalitytestingandlen().


,theycompareequal.


Changedinversion2.6:Addediterationandequality(hashability).


keys()

.Immediatelyafteraquery,.description.


Newinversion2.6.


下面舉例說明


In[30]:cx.row_factory=sqlite3.Row


In[31]:c=cx.cursor()


In[32]:c.execute('select*fromcatalog')

Out[32]:<sqlite3.Cursorobjectat0x05666680>


In[33]:r=c.fetchone()


In[34]:type(r)

Out[34]:<type'sqlite3.Row'>


In[35]:r

Out[35]:<sqlite3.Rowobjectat0x05348980>


In[36]:printr

(0,10,u'u9c7c',u'Yu')


In[37]:len(r)

Out[37]:4


In[39]:r[2]#使用索引查詢

Out[39]:u'u9c7c'


In[41]:r.keys()

Out[41]:['id','pid','name','nickname']


In[42]:foreinr:

....:printe,

....:

010魚Yu


使用列的關鍵詞查詢

In[43]:r['id']

Out[43]:0


In[44]:r['name']

Out[44]:u'u9c7c'

閱讀全文

與python的gui背景編程相關的資料

熱點內容
為什麼滴滴出行app還能用 瀏覽:562
怎麼升級手機android 瀏覽:922
php權威編程pdf 瀏覽:994
扣扣加密技巧 瀏覽:720
蘋果如何創建伺服器錯誤 瀏覽:495
軟考初級程序員大題分值 瀏覽:473
js壓縮視頻文件 瀏覽:578
linux如何通過命令創建文件 瀏覽:989
應用加密app還能訪問應用嘛 瀏覽:433
安卓怎麼用支付寶交違章罰款 瀏覽:665
php面向對象的程序設計 瀏覽:504
數據挖掘演算法書籍推薦 瀏覽:894
投訴聯通用什麼app 瀏覽:151
web伺服器變更ip地址 瀏覽:955
java正則表達式驗證郵箱 瀏覽:362
成熟商務男裝下載什麼軟體app 瀏覽:610
加密2h代表長度是多少厘米 瀏覽:23
拍賣程序員 瀏覽:103
電腦的圖片放在哪個文件夾 瀏覽:276
unsignedintjava 瀏覽:218