pyqt5頁面布局提供兩種方式絕對定位和布局類。
絕對定位即程式指定每個控制項的位置和大小(以畫素為單位)。例如:
#!/usr/bin/python
#coding:utf-8
import sys
class example(qwidget):
def __init__(self):
super().__init__()
self.initui()
def initui(self):
#寫控制項
lb11 = qlabel('zetcode',self)
#move()控制控制項在彈窗上的位置
lb11.move(15,10)
lb12 = qlabel('tutorials',self)
lb12.move(35,40)
lb13 = qlabel('for programmers',self)
lb13.move(55,70)
#四個引數前兩個是螢幕上的位置,後兩個視窗長寬
self.setgeometry(300,300,250,250)
self.setwindowtitle('absolute')
self.show()
if __name__ == '__main__':
ex = example()
執行生成結果:
絕對定位有一下幾點弊端:
可以使用qhboxlayout和qvboxlayout,來分別建立橫向布局和縱向布局。例如:
#!/usr/bin/python
#coding:utf-8
import sys
from pyqt5.qtwidgets import *
class example(qwidget):
def __init__(self):
super().__init__()
self.initui()
def initui(self):
#繫結按鈕,設定按鈕名稱
okbutton = qpushbutton('ok')
cancelbutton = qpushbutton('cancel')
#建立水平布局
hbox = qhboxlayout()
#新增伸展因子,推動兩個按鈕靠右顯示
hbox.addstretch(1)
#新增兩個按鈕
hbox.addwidget(okbutton)
hbox.addwidget(cancelbutton)
#建立垂直布局
vbox = qvboxlayout()
#新增伸展因子,讓水平布局顯示在視窗底部
vbox.addstretch(1)
vbox.addlayout(hbox)
#設定整個頁面布局
self.setlayout(vbox)
self.setgeometry(300,300,300,150)
self.setwindowtitle('buttons')
self.show()
if __name__ == '__main__':
ex = example()
**布局將空間劃分為行和列。使用qgridlayout類建立乙個網格布局。例如:
(1)計算器例子。
#!/usr/bin/python
#coding:utf-8
import sys
from pyqt5.qtwidgets import *
class example(qwidget):
def __init__(self):
super().__init__()
self.initui()
def initui(self):
#建立qgridlayout例項
grid = qgridlayout()
self.setlayout(grid)
#按鈕names = ['cls','bck','','close',
'7','8','9','/',
'4','5','6','*',
'1','2','3','-',
'0','.','=','+']
#建立網格中的位置列表
positions = [(i,j) for i in range(5) for j in range(4)]
#建立按鈕並使用addwidget()方法新增到布局中
for positions,name in zip(positions,names):
if name == '':
continue
button = qpushbutton(name)
grid.addwidget(button,*positions)
self.move(300,150)
self.setwindowtitle('calculator')
self.show()
if __name__ == '__main__':
ex = example()
#!/usr/bin/python
#coding:utf-8
import sys
from pyqt5.qtwidgets import *
class example(qwidget):
def __init__(self):
super().__init__()
self.initui()
def initui(self):
#建立三個標籤
title = qlabel('title')
author = qlabel('author')
review = qlabel('review')
#建立兩個行編輯和乙個文字編輯小控制項
titleedit = qlineedit()
authoredit = qlineedit()
reviewedit = qtextedit()
#建立乙個網格布局,設定元件之間的間距為10px
grid = qgridlayout()
grid.setspacing(10)
#新增乙個控制項到網格中
grid.addwidget(title,1,0)
grid.addwidget(titleedit,1,1)
grid.addwidget(author,2,0)
grid.addwidget(authoredit,2,1)
grid.addwidget(review,3,0)
grid.addwidget(reviewedit,3,1,5,1)
self.setlayout(grid)
self.setgeometry(300,300,350,300)
self.setwindowtitle('review')
self.show()
if __name__ == '__main__':
ex = example()
控制項可以在網格中跨越多個行或列。在新增乙個小的控制項到網格的時候,我們可以提供小部件的行和列跨。grid.addwidget(reviewedit,3,1,5,1)中5表示reviewedit控制項跨度5行。
執行效果圖:
python GUI程式設計 Tkinter
python 提供了多個圖形開發介面的庫,幾個常用 python gui 庫如下 tkinter 是 python 的標準 gui 庫。python 使用 tkinter 可以快速的建立 gui 應用程式。由於 tkinter 是內建到 python 的安裝包中 只要安裝好 python 之後就能 ...
python ui庫 常用Python GUI庫
1 wxpython wxpython 是乙個跨平台的 gui 工具集,是 python 語言的一套優秀的 gui 圖形庫,允許程式設計師建立完整的 功能鍵全的 gui 使用者介面。它以wxwidgets為基礎,可以分別在windows mac os linux上呼叫它們的本地元件,讓 gui 程式...
Python GUI程式設計各種實現的對比
python gui程式設計各種實現的對比 2011年05月21日 從python語言的誕生之日起,就有許多優秀的gui工具集整合到python當中,這些優秀的gui工具集,使得python也可以在圖形介面程式設計領域當中大展身手,由於python的流行,許多應用程式都是由python結合那些優秀的...