Pyqt5 基本布局方式


四種布局方式:水平,垂直,網格,窗體布局。以及兩種布局方法:addLayout和addWidget。

不過窗體布局QFormLayout幾乎不用,其他三種就足夠了。
來個例子(模仿windows選擇文件的布局):

代碼:

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import sys
class MyWindow(QWidget):
    def __init__(self):
        super(MyWindow, self).__init__()
        self.setWindowTitle("請選擇文件/文件夾")
        self.resize(700, 500)

        self.initUI()
        self.show()

    def initUI(self):
        Layout = QGridLayout(self)
        #定義全局布局,注意參數self
        g = QGridLayout()
        v = QVBoxLayout()
        h = QHBoxLayout()
        # 定義其他兩種種布局
        label1 = QLabel("快速訪問")
        label2 = QLabel("桌面")
        label3 = QLabel("庫")
        label4 = QLabel("我的電腦")
        label7 = QLabel("文件名(N):")
        label6 = QLabel("文件類型(T):")
        label5 = QLabel("網絡")
        btn1 = QPushButton("選擇")
        btn1.resize(100,10)
        btn2 = QPushButton("取消")
        combo1 = QComboBox()
        combo2 = QComboBox()
        combo2.addItem("所有文件(*.*)")
        #定義各種控件

        splitter = QSplitter()
        model = QFileSystemModel()
        model.setRootPath(QDir.currentPath())
        tree = QTreeView(splitter)
        tree.setModel(model)
        #tree.setRootIndex(model.index(QDir.currentPath()))

        v.addWidget(label1)
        v.addWidget(label2)
        v.addWidget(label3)
        v.addWidget(label4)
        v.addWidget(label5)
        g.addWidget(label7, 0, 0)
        g.addWidget(label6, 1, 0)
        g.addWidget(combo1, 0, 1)
        g.addWidget(combo2, 1, 1)
        g.addWidget(btn1, 0, 2)
        g.addWidget(btn2, 1, 2)
        h.addWidget(tree)
        #把控件加入布局
        Layout.addLayout(v, 0, 0)
        Layout.addLayout(h, 0, 1)
        Layout.addLayout(g, 1, 1,)
        #把布局加入總的布局方式

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyWindow()
    sys.exit(app.exec_())

參考:
http://www.cnblogs.com/archisama/p/5453260.html
http://blog.csdn.net/zhulove86/article/details/52563298
http://www.linuxidc.com/Linux/2012-06/63652p12.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM