pyqt5學習筆記 1

2021-09-27 07:49:25 字數 4465 閱讀 9249

from pyqt5.qt import

*import sys

# 使用sys.ar**是為了讓gui程式接收到使用者傳遞的引數

# 建立乙個控制項,如果這個控制項沒有父控制項,那麼pyqt5會控制項加上標題等屬性,並可以設定屬性內容

# 這個控制項也可以叫做頂層控制項,沒有父控制項的控制項的展示需要呼叫show方法,父控制項展示,子控制項會自動展示,無需呼叫show方法

window = qwidget(

)# 設定頂層控制項的標題

window.setwindowtitle(

"社會我輝哥,人帥話還多"

)# 設定空間的大小,如果這個控制項是父控制項,那麼這個尺寸是不加上標題欄的長寬的

window.resize(

500,

500)

# 展示位置

window.move(

400,

200)

# 建立乙個標籤控制項,指名父控制項為window

label = qlabel(window)

# 設定標籤文字

label.settext(

"第乙個gui小視窗"

)# 設定控制項左上角相對于父控制項的位置

label.move(

200,

200)

# 展示父控制項

window.show(

)# 讓外部程式知道這個gui程式退出的程式碼,這個程式碼能夠反映這個程式時因為什麼來退出的。

))

1.2.1 qobject:所有qt物件的基類
from pyqt5.qtcore import qobject

# qobject是pyqt5中所有控制項的基類

qobject = qobject(

)# 設定qt物件(控制項等)名稱,,一般這個名稱是唯一的,用來當做qt物件的id使用,

qobject.setobjectname(

"zheng"

)# 獲取qt物件名稱

print

(qobject.objectname())

# zheng

# 使用setproperty方法動態的給乙個qt物件新增屬性和值

qobject.setproperty(

"name"

,"xiaoming"

)qobject.setproperty(

"age",18

)# property方法獲取qt物件的屬性值

print

(qobject.

property

("name"))

# xiaoming

# 獲取qt物件所有通過setproperty設定的屬性名稱

print

(qobject.dynamicpropertynames())

# [pyqt5.qtcore.qbytearray(b'name'), pyqt5.qtcore.qbytearray(b'age')]

上述api中setobjectname的應用場景:1.用於qss樣式表的選擇器(見下例1)2.用於裝飾器的訊號與槽。

例子1:

from pyqt5.qt import

*import sys

class

window

(qwidget)

:def

__init__

(self)

:# 先呼叫父類的初始化方法

super()

.__init__(

) self.setwindowtitle(

"標題"

) self.resize(

500,

500)

self.move(

400,

400)

self.sub_widget(

)def

sub_widget

(self)

:# 載入樣式表的方式

with

open

("style.qss"

,"r"

)as f:))

label1 = qlabel(self)

# 設定標籤的內容

label1.settext(

"社會我濤哥"

)# 設定qt物件的名稱

label1.setobjectname(

"label1"

)# 給qt物件動態的新增屬性

label1.setproperty(

"name"

,"xiaoming1"

) label2 = qlabel(self)

label2.settext(

"人帥話很多"

) label2.setobjectname(

"label1"

) label2.setproperty(

"name"

,"xiaoming"

) label2.move(

100,

150)

# 每個控制項都是可以設定控制項的

# label1.setstylesheet("color:red;")

if __name__ ==

'__main__'

: window = window(

) window.show(

)# 顯示結果"人帥話很多"顯示紅色

))

# 選擇物件名稱為label1的並且有name屬性的值為xiaoming的qlabel的物件,注意這裡的label1是經過setobjectname方法設定的

qlabel#label1[name="xiaoming"]

qobject物件中父子關係api學習:

from pyqt5.qt import

*import sys

class

window

(qwidget)

:def

__init__

(self)

:super()

.__init__(

) self.setwindowtitle(

"火車票小助手"

) self.resize(

500,

500)

self.move(

400,

400)

self.sub_widget(

)def

sub_widget

(self)

: q1 = qobject(

) q2 = qobject(

) q3 = qobject(

) q4 = qobject(

) q5 = qobject(

) q6 = qobject(

) q2.setparent(q1)

q3.setparent(q1)

q4.setparent(q2)

q5.setparent(q3)

q6.setparent(q3)

print

("q1"

, q1)

print

("q2"

, q2)

print

("q3"

, q3)

print

("q4"

, q4)

print

("q5"

, q5)

print

("q6"

, q6)

# 獲取所有的直接父節點

# print(q1.children()) # q2 ,q3

# 獲取所有的直接父節點

# print(q4.parent()) # q2

# 獲取所有的子控制項,包括非直接子控制項都能夠獲取,這個函式有三個引數,引數一:

# 可以傳遞要篩選的子控制項的型別,或者是型別列表,引數二:可以傳遞子控制項的名稱,引數三:選擇篩選的方式

# print(q1.findchildren(qobject))

# 獲取乙個子控制項,如果找到乙個直接進行返回

print

(q1.findchild(qobject)

)# 返回q2

# 空間的記憶體管理機制

# 父控制項一旦刪除,所有的子控制項自動刪除

q2.destroyed.connect(

lambda x:

print

("子控制項被刪除了"))

if __name__ ==

'__main__'

: window = window(

) window.show())

)

PyQt5 學習筆記(1)

在學習pyqt5的布局時,發現如下問題 當使用pyqt5.qtwidgets.qmainwindow 建立主視窗,並向主視窗新增布局時,會報警告 qwidget setlayout attempting to set qlayout on qmainwindow which already has ...

PyQt5 學習筆記

pyqt5是由一系列python模組組成。超過620個類,6000函式和方法。能在諸如unix windows和mac os等主流作業系統上執行。pyqt5有兩種證書,gpl和商業證書。pyqt5類分為很多模組,主要模組有 qtcore 包含了核心的非gui的功能。主要和時間 檔案與資料夾 各種資料...

pyqt5入門學習筆記

import sys if name main 建立乙個視窗 w qwidget 設定乙個視窗尺寸 w.resize 400,200 移動視窗 w.move 300,300 設定視窗標題 w.setwindowtitle 第乙個基於pyqt5的桌面應用 顯示視窗 w.show 進入程式的主迴圈,並通...