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 進入程式的主迴圈,並通...