pyQt5 學習筆記(2)基本視窗繪畫

2021-09-28 12:30:38 字數 3788 閱讀 1885

二、練習

import sys

if __name__ ==

'__main__'

:#sys.ar** 是執行python指令碼的時候 可以往程式輸入引數

w = qwidget(

)#建立視窗物件

w.resize(

250,

150)

#視窗大小

w.move(

300,

300)

#視窗位置:即執行程式後,視窗的座標

w.setwindowtitle(

'******'

)#設定標題為:******

w.show(

)#顯示視窗

))#程式進入了迴圈

效果如下:

這個簡單的程式演示了怎麼設定乙個視窗的名稱等,pyqt還提供了設定視窗的圖示,是否顯示標題欄等等。

import sys

if __name__ ==

'__main__'

:# 第乙個控制項

w1 = qwidget(

) w1.resize(

250,

150)

w1.move(

300,

300)

w1.setwindowtitle(

'first '

) w1.show(

)# 第二個控制項

w2 = qwidget(

) w2.resize(

250,

150)

w2.move(

100,

200)

w2.setwindowtitle(

'second'

) w2.show())

)# 程式進入了迴圈

效果如下所示:

可以看到我們建立了2個視窗,標題名為 second 的視窗在 first 之上,可以知道pyqt預設後建立的控制項在上層。

指定控制項的父子關係,方便統一管理。比如在乙個對話方塊中,裡面的擁有qbutton,qlabel,qtextedit控制項可以作為這個對話方塊的子控制項,這樣當父控制項(對話方塊)被銷毀的時候,子控制項也自動銷毀,而且子控制項會約束在父控制項中。

上一段**我們建立了兩個空間,現在我們讓其中乙個作為子控制項,另乙個作為父控制項:

import sys

if __name__ ==

'__main__'

:# 父控制項

f = qwidget(

) f.resize(

250,

150)

f.move(

100,

200)

f.setwindowtitle(

'mainwindow'

)#父控制項座標:原點(0,0)為螢幕的最左上角

# 子控制項

s = qwidget(

) s.resize(50,

100)

s.move(10,

10)#子控制項座標:原點(0,0)為父控制項的最左上角

s.setparent(f)

#設定f為s的父控制項

s.setstylesheet(

"background:red;"

)#設定s這個控制項的背景顏色為紅色

f.show(

)#顯示父控制項,子控制項也自動顯示))

# 程式進入了迴圈

執行效果如下:

這段程式有以下幾個知識點:

設定父子控制項的**為:s.setparent(f)

子控制項沒有設定標題欄,是因為沒有作用,因為這個控制項並沒有標題欄,f控制項是因為是頂層控制項,所以系統自動給新增的,因為這是乙個普通基本視窗都會有的結構。

通過設定控制項的表來配置控制項的背景顏色,當然,可以設定顯示的文字畫素大小,字型等,這裡暫且不詳說。

建立父控制項還有另一種方便的方式,即在建立子控制項時候,引數寫入父控制項,可一步完成建立控制項和指定父控制項的操作,程式如下所示:

import sys

if __name__ ==

'__main__'

:# 父控制項

f = qwidget(

) f.resize(

250,

150)

f.move(

100,

200)

f.setwindowtitle(

'mainwindow'

)#父控制項座標(0,0)為螢幕的最左上角

# 子控制項

s = qwidget(f)

#建立子控制項s,並指定f為其父空間

s.resize(50,

100)

s.move(10,

10)#子控制項座標(0,0)為父控制項的最左上角

s.setstylesheet(

"background:red;"

)#設定s這個控制項的背景顏色為紅色

f.show(

)#顯示父控制項,子控制項也自動顯示))

# 程式進入了迴圈

這段程式使用 s=qwidget(f) 來指定f為s的父控制項,所以也不再需要 s.setparent(f),注意到,每乙個子控制項可以指定乙個父控制項,也只能擁有乙個父控制項,如果重複指定,那麼只有最後指定的父控制項是有效的。

設計乙個簡單的視窗,執行效果如下:

:# 父控制項

f = qwidget(

) f.resize(

250,

150)

f.move(

100,

200)

f.setwindowtitle(

'mainwindow'

)#父控制項座標(0,0)為螢幕的最左上角

redb = qpushbutton(

'red'

, f)

#這是顯示的文字為『red』,指定父控制項為f

redb.setcheckable(

true

) redb.move(10,

10)redb.setstylesheet(

"background:red;font-size:20px;"

) greb = qpushbutton(

'green'

, f)

greb.setcheckable(

true

) greb.move(

100,10)

greb.setstylesheet(

"background:green;font-size:10px;"

) f.show(

)#顯示父控制項,子控制項也自動顯示))

# 程式進入了迴圈

PyQt5 學習筆記

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

內建視窗 pyqt5

注意 在主視窗中需要新增乙個girdlayout self.gridlayout.addwidget self.child1 將視窗放入girdlayout中 self.child1.show 開啟子視窗1 小技巧 發現出現了兩個底邊那個東西 在由視窗檔案生成的.py檔案中找到如下 self.sta...

pyqt5學習筆記 1

from pyqt5.qt import import sys 使用sys.ar 是為了讓gui程式接收到使用者傳遞的引數 建立乙個控制項,如果這個控制項沒有父控制項,那麼pyqt5會控制項加上標題等屬性,並可以設定屬性內容 這個控制項也可以叫做頂層控制項,沒有父控制項的控制項的展示需要呼叫show...