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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

python

学pyqt5之前需要学python吗_快速学习pyqt5(1)--入门

發(fā)布時(shí)間:2025/3/8 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学pyqt5之前需要学python吗_快速学习pyqt5(1)--入门 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

學(xué)習(xí)于:PyQt5圖形界面編程 想要系統(tǒng)學(xué)習(xí)的同學(xué)建議可以去這個(gè)專欄好好學(xué)習(xí),沒有任何語(yǔ)言基礎(chǔ)和計(jì)算機(jī)基礎(chǔ)的也建議直接去看那個(gè)專欄。我這里是有java基礎(chǔ)了,所以就不重復(fù),針對(duì)快速學(xué)習(xí)使用。

學(xué)習(xí)這個(gè)的目的是完成學(xué)校的SIT項(xiàng)目,所以在這里記錄完成這個(gè)項(xiàng)目的全部過(guò)程。至于軟件的安裝,環(huán)境的搭建之類的,大家可以去看那個(gè)專欄,我就不復(fù)述了。我使用的是spyder進(jìn)行編程,基于python3.7的環(huán)境。

然后編程方式有兩種:1.直接手寫全部代碼 2.使用工具拖拽完成(如eric6、designer)

第一個(gè)問(wèn)題:運(yùn)行代碼的時(shí)候出現(xiàn) kernel died, restarting 提示

解決方法 :在命令行輸入conda update spyder即可

首先,第一份代碼:

import sys

from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':

app = QApplication(sys.argv)

w = QWidget()

w.resize(250, 150)

w.move(300, 300)

w.setWindowTitle('my first windows')

w.show()

sys.exit(app.exec_())

解釋:

import sys

from PyQt5.QtWidgets import QApplication, QWidget

導(dǎo)入相關(guān)的包,PyQt5.QtWidgets里面的QApplication, QWidget

作用:QtWidgets模塊包含了一整套UI元素組件,用于建立符合系統(tǒng)風(fēng)格的classic界面,非常方便,可以在安裝時(shí)選擇是否使用此功能。

if __name__ == '__main__':

這個(gè)屬于Python基礎(chǔ)知識(shí),如果寫了這句話并將執(zhí)行的語(yǔ)句放到這個(gè)判斷語(yǔ)句的后面,那么只有在程序本身被執(zhí)行的時(shí)候才能運(yùn)行這個(gè)判斷語(yǔ)句下面的語(yǔ)句。否則程序被作為模塊導(dǎo)入的時(shí)候就不會(huì)執(zhí)行(這個(gè)建議自己找本書或視頻看,我的理解就是,你直接運(yùn)行這個(gè)文件時(shí),此時(shí)__name_屬性就等于_main__,那么就會(huì)運(yùn)行下面的代碼,否則,如果作為模塊導(dǎo)入,就不運(yùn)行)。注意python是不需要括號(hào)來(lái)規(guī)范的,只需要保持對(duì)齊即可。

app = QApplication(sys.argv)

每個(gè)PyQt5應(yīng)用程序必須創(chuàng)建一個(gè)應(yīng)用程序?qū)ο蟆?sys.argv參數(shù)是來(lái)自命令行的參數(shù)列表。 Python腳本可以從shell運(yùn)行。 寫了這句話就能讓我們的程序從命令行啟動(dòng)。

w = QWidget()

QWidget小部件是PyQt5中所有用戶界面對(duì)象的基類。 我們提供了QWidget的默認(rèn)構(gòu)造函數(shù)。 默認(rèn)構(gòu)造函數(shù)沒有父類。 沒有父類口小部件稱為窗口。

w.resize(250, 150)

resize()方法調(diào)整窗口小部件的大小。這里我們?cè)O(shè)定窗口的大小:寬250像素,高150像素。

w.move(300, 300)

move()方法將小部件移動(dòng)到屏幕上x = 300,y = 300坐標(biāo)處的位置。這里我們來(lái)看一下屏幕坐標(biāo)是怎么設(shè)定的,來(lái)看看下圖。

通過(guò)上圖我們可以知曉,坐標(biāo)原點(diǎn)是從哪里開始計(jì)算的,我們要是將程序中的(300,300)這個(gè)坐標(biāo)改成(0,0),窗口就會(huì)跑到左上角去了,大家可以試試。

w.setWindowTitle('my first windows')

這個(gè)方法顧名思義,就是設(shè)置窗口的標(biāo)題。

w.show()

show()方法在屏幕上顯示窗口小部件。 一個(gè)小部件首先在內(nèi)存中創(chuàng)建,然后在屏幕上顯示。

sys.exit(app.exec_())

最后,我們進(jìn)入應(yīng)用程序的主循環(huán)(main loop)。 事件處理從這一點(diǎn)開始。 主循環(huán)(main loop)從窗口系統(tǒng)接收事件并將它們分派到應(yīng)用程序小部件。 如果我們調(diào)用exit()方法或者主窗口小部件被破壞,那么主循環(huán)(main loop)就會(huì)結(jié)束。

sys.exit()方法確保一個(gè)干凈的退出。

exec_()方法有一個(gè)下劃線。 這是因?yàn)閑xec是一個(gè)Python關(guān)鍵字。 因此,使用exec_()。

GUI應(yīng)用程序都是事件驅(qū)動(dòng)的。比如鍵盤事件、鼠標(biāo)事件等等。還有一些事件來(lái)自于系統(tǒng)內(nèi)部,比如定時(shí)事件、其它文件事件等等。在沒有任何事件的情況下,應(yīng)用程序處于睡眠狀態(tài)。這種事件驅(qū)動(dòng)機(jī)制,GUI應(yīng)用程序都需要一個(gè)主循環(huán)(main loop)。主循環(huán)(main loop)控制應(yīng)用程序什么時(shí)候進(jìn)入睡眠狀態(tài),什么時(shí)候被喚醒。所以主循環(huán)(main loop)就是干這個(gè)的。

然后第一步走到這里就算有基本認(rèn)知了。

然后用面向?qū)ο缶帉?#xff1a;(大佬寫的那個(gè)格式不對(duì),調(diào)整了一下)

import sys

from PyQt5.QtWidgets import QApplication, QWidget

from PyQt5.QtGui import QIcon

class Ico(QWidget):

def __init__(self):

super().__init__()

self.initUI()

def initUI(self):

self.setGeometry(300, 300, 300, 220)

self.setWindowTitle('學(xué)點(diǎn)編程吧出品')

self.setWindowIcon(QIcon('aa.ico'))

self.show()

if __name__ == '__main__':

app = QApplication(sys.argv)

ex = Ico()

sys.exit(app.exec_())

解釋: 這里有一個(gè)類,類名為Ico,它的父類為QWidg,通過(guò)( )即括號(hào)實(shí)現(xiàn)繼承。里面有兩個(gè)函數(shù),init和initUI。init是構(gòu)造函數(shù),創(chuàng)建實(shí)例的時(shí)候(即下面ex=Ico(),這里不像java那樣要使用new關(guān)鍵字進(jìn)行實(shí)例的生成)就會(huì)自動(dòng)調(diào)用init這個(gè)函數(shù)。init里面的super代表調(diào)用父類的init方法,這樣就可以使用父類的東西,然后接著調(diào)用自己的initUI函數(shù)。

self.setGeometry(300, 300, 300, 220)

self.setWindowTitle('學(xué)點(diǎn)編程吧出品')

self.setWindowIcon(QIcon('xdbcb8.ico'))

上面的三種方法都已經(jīng)從QWidget類中繼承的。 setGeometry()做了兩件事情:它在屏幕上定位窗口并設(shè)置它的大小;前兩個(gè)參數(shù)是窗口的x和y位置;第三個(gè)是寬度;第四個(gè)是窗口的高度。實(shí)際上,它在一個(gè)方法中組合了resize()和move()方法。 最后一個(gè)方法設(shè)置應(yīng)用程序圖標(biāo)。 為此,我們創(chuàng)建了一個(gè)QIcon對(duì)象。 QIcon接收到我們要顯示的圖標(biāo)的路徑(和當(dāng)前程序在同一個(gè)目錄下,我是直接網(wǎng)上隨便下載了個(gè)ico文件)。最后的self.show()就是這個(gè)窗體的顯示了。

然后到這里,我發(fā)現(xiàn)它每個(gè)函數(shù)的參數(shù)都有個(gè)self,這個(gè)就相當(dāng)于this,也就是生成這個(gè)類的實(shí)例自己。java中一般都不寫這個(gè)this的,因?yàn)檎{(diào)用的時(shí)候默認(rèn)就是這個(gè),父類的就是super。這樣一看來(lái),那么python不是要寫很多的self咯。哈哈哈哈。

運(yùn)行效果圖:

然后看第三個(gè)案例:

額,今天是暫時(shí)不能運(yùn)行著第三個(gè)了,因?yàn)樵诎惭berric6的時(shí)候出現(xiàn)了異常,后面導(dǎo)致我的spyder都打不開了。

遇到的問(wèn)題:

1.我安裝了兩個(gè)python。一個(gè)是mysql幫我弄的,2.7版本。一個(gè)是anaconda帶的,3.7版本。然后就是cmd里默認(rèn)使用2.7的。所以我百度了一下,發(fā)現(xiàn)把a(bǔ)naconda的環(huán)境變量放在mysql的前面就可以了。這個(gè)倒沒啥,一下子就解決了。我的mysql原來(lái)是在系統(tǒng)環(huán)境變量里的,anaconda是在用戶環(huán)境變量里的,所以我把mysql的環(huán)境變量放在了用戶環(huán)境變量的最后面就ok了。

在這里學(xué)習(xí)了where python 和python list兩個(gè)命令。

2.python install.py的時(shí)候,說(shuō)我需要安裝 QScintilla,然后我就pip install 這個(gè)了,接著又提示我:

Could not install packages due to an EnvironmentError: [WinError 5] 拒絕訪問(wèn)

然后網(wǎng)上說(shuō)要加上--user ,然后我就加上它,就變成 pip install --user QScintilla 然后pip安裝成功了。 這也沒啥。

3.搞定上面之后,我又把一個(gè)沒有的小東西安裝上了。這都沒啥。然后繼續(xù)運(yùn)行python install.py 出現(xiàn)下面的錯(cuò)誤:

PyQt5 could not be detected. Error: No module named 'PyQt5.sip' 截圖就是:

此時(shí),我在python里import什么pyqt5啊,sip啊之類的都是可以import的。它這里也明明提示我這些都有了。可是它還是提醒我要安裝pyqt5。然后我pip list,pyqt5的包都是在的,去安裝路徑找也都在,可它就是要我安裝。在spyder里,我直接運(yùn)行install.py文件,這里pyqt5啥的都說(shuō)找到了,可是它卻說(shuō)我QScintilla沒安裝,可是我明明安裝了啊,在cmd里都有了。然后一安裝還出問(wèn)題了。 我覺得可能是系統(tǒng)有點(diǎn)問(wèn)題,然后重啟。重啟之后發(fā)現(xiàn),spyder打不開了,anaconda里什么navigate啊之類的也打不開了。現(xiàn)在是代碼都不用寫了。改天再找個(gè)ide來(lái)寫吧。

今天就算是學(xué)習(xí)了pyqt5的基礎(chǔ)吧,看代碼基本都能看懂了,沒啥大問(wèn)題。可是工具卻沒用上。額,就到這里了。

歡迎交流討論。

總結(jié)

以上是生活随笔為你收集整理的学pyqt5之前需要学python吗_快速学习pyqt5(1)--入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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