pythonGUI程式設計 Qt庫(2)介面布局

2021-10-01 01:31:11 字數 3874 閱讀 9249

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結合那些優秀的...