1.垂直布局,水平布局和网格布局

 import sys
 from PyQt4 import QtCore, QtGui

 class MyWindow(QtGui.QWidget):
     def __init__(self):
         QtGui.QWidget.__init__(self)
         self.setWindowTitle('QtLayout')
         self.resize(600, 480)

         row1 = QtGui.QHBoxLayout()#第一行,水平布局
         lbl1 = QtGui.QLabel('水平布局:上')
         lbl1.setAlignment(QtCore.Qt.AlignCenter)
         row1.addWidget(lbl1)

         row2 = QtGui.QHBoxLayout()#第二行,水平布局
         clm1 = QtGui.QVBoxLayout()#第二行第一列,垂直布局
         lbl2 = QtGui.QLabel('垂直布局:左上')
         lbl2.setAlignment(QtCore.Qt.AlignCenter)
         lbl3 = QtGui.QLabel('垂直布局:左下')
         lbl3.setAlignment(QtCore.Qt.AlignCenter)
         clm1.addWidget(lbl2)
         clm1.addWidget(lbl3)
         clm2 = QtGui.QVBoxLayout()#第二行第二列,垂直布局
         lbl4 = QtGui.QLabel('垂直布局:右上')
         lbl4.setAlignment(QtCore.Qt.AlignCenter)
         lbl5 = QtGui.QLabel('垂直布局:右下')
         lbl5.setAlignment(QtCore.Qt.AlignCenter)
         clm2.addWidget(lbl4)
         clm2.addWidget(lbl5)
         row2.addLayout(clm1)
         row2.addLayout(clm2)

         grid = QtGui.QGridLayout()#整体,网格布局
         grid.addLayout(row1, 0, 0)
         grid.addLayout(row2, 1, 0)
         grid.setRowMinimumHeight(1, 440)
         self.setLayout(grid)

 app = QtGui.QApplication(sys.argv)
 mywindow = MyWindow()
 mywindow.show()
 app.exec_()

qtLayout

2.在布局中使用QSpacerItem占位

 import sys
 from PyQt4 import QtCore, QtGui

 class MyWindow(QtGui.QWidget):
     def __init__(self):
         QtGui.QWidget.__init__(self)
         self.setWindowTitle('QtSpacer')
         self.resize(300, 200)

         row1 = QtGui.QSpacerItem(0, 0)
         row2 = QtGui.QLabel('你逃我也逃')
         row2.setAlignment(QtCore.Qt.AlignCenter)
         row3 = QtGui.QSpacerItem(0, 0)

         grid = QtGui.QGridLayout()
         grid.addItem(row1)
         grid.addWidget(row2)
         grid.addItem(row3)
         self.setLayout(grid)

 app = QtGui.QApplication(sys.argv)
 mywindow = MyWindow()
 mywindow.show()
 app.exec_()

qtSpacer.py

3.按钮QPushButton

 import sys
 from PyQt4 import QtCore, QtGui

 class MyWindow(QtGui.QWidget):
     def __init__(self):
         QtGui.QWidget.__init__(self)
         self.setWindowTitle('QtButton')
         self.resize(485, 300)

         self.btn1 = QtGui.QPushButton('大西洋帝国')
         self.btn2 = QtGui.QPushButton('太空堡垒')
         self.btn2.setFlat(True)

         grid = QtGui.QGridLayout()
         grid.addWidget(self.btn1, 0, 0, 1, 3)
         grid.addWidget(self.btn2, 1, 1)
         self.setLayout(grid)

         self.connect(self.btn1, QtCore.SIGNAL('clicked()'), self.onBtn1)
         self.connect(self.btn2, QtCore.SIGNAL('clicked()'), self.onBtn2)

     def onBtn1(self):
         self.btn1.setText('Clicked')
     def onBtn2(self):
         self.btn2.setText('Clicked')

 app = QtGui.QApplication(sys.argv)
 mywindow = MyWindow()
 mywindow.show()
 app.exec_()

qtButton.py

4.单行文本QLineEdit

 import sys
 from PyQt4 import QtCore, QtGui

 class MyWindow(QtGui.QWidget):
     def __init__(self):
         QtGui.QWidget.__init__(self)
         self.setWindowTitle('QtLineEdit')
         self.resize(485, 300)

         self.lbl1 = QtGui.QLabel('Normal LineEdit')
         self.lbl1.setAlignment(QtCore.Qt.AlignCenter)
         self.txt1 = QtGui.QLineEdit()
         self.lbl2 = QtGui.QLabel('Password LineEdit')
         self.lbl2.setAlignment(QtCore.Qt.AlignCenter)
         self.txt2 = QtGui.QLineEdit()
         self.txt2.setEchoMode(QtGui.QLineEdit.Password)

         grid = QtGui.QGridLayout()
         grid.addWidget(self.lbl1)
         grid.addWidget(self.txt1)
         grid.addWidget(self.lbl2)
         grid.addWidget(self.txt2)

         self.setLayout(grid)

 app = QtGui.QApplication(sys.argv)
 mywindow = MyWindow()
 mywindow.show()
 app.exec_()

qtLineEdit

5.多行文本框

 import sys
 from PyQt4 import QtCore, QtGui

 class MyWindow(QtGui.QWidget):
     def __init__(self):
         QtGui.QWidget.__init__(self)
         self.setWindowTitle('QtText')
         self.resize(485, 300)

         self.lbl = QtGui.QLabel('TextEdit')
         self.lbl.setAlignment(QtCore.Qt.AlignCenter)
         self.txt = QtGui.QTextEdit()
         self.txt.setText('权利游戏\n杯具淘汰法')

         grid = QtGui.QGridLayout()
         grid.addWidget(self.lbl)
         grid.addWidget(self.txt)

         self.setLayout(grid)

 app = QtGui.QApplication(sys.argv)
 mywindow = MyWindow()
 mywindow.show()
 app.exec_()

qtText.py

6.单选框、复选框

 import sys
 from PyQt4 import QtCore, QtGui

 class MyWindow(QtGui.QWidget):
     def __init__(self):
         QtGui.QWidget.__init__(self)
         self.setWindowTitle('QtRCButton')
         self.resize(485, 300)

         self.rad1 = QtGui.QRadioButton('鬼地方')
         self.rad2 = QtGui.QRadioButton('爱痒痒')
         self.rad3 = QtGui.QRadioButton('阿尔法战士')
         self.chk = QtGui.QCheckBox('安全警报')
         self.btn = QtGui.QPushButton('Test')
         self.lbl = QtGui.QLabel()
         self.lbl.setAlignment(QtCore.Qt.AlignCenter)

         self.connect(self.btn, QtCore.SIGNAL('clicked()'), self.onBtn)

         grid = QtGui.QGridLayout()
         grid.addWidget(self.rad1, 0, 0)
         grid.addWidget(self.rad2, 0, 1)
         grid.addWidget(self.rad3, 0, 2)
         grid.addWidget(self.chk, 1, 1)
         grid.addWidget(self.btn, 2, 0)
         grid.addWidget(self.lbl, 2, 1, 1, 2)
         self.setLayout(grid)

     def onBtn(self):
         self.lbl.clear()
         if self.rad1.isChecked():
             self.lbl.setText(self.rad1.text())
         elif self.rad2.isChecked():
             self.lbl.setText(self.rad2.text())
         else:
             self.lbl.setText(self.rad3.text())
         if self.chk.isChecked():
             self.lbl.setText(self.lbl.text()+' '+self.chk.text())

 app = QtGui.QApplication(sys.argv)
 mywindow = MyWindow()
 mywindow.show()
 app.exec_()
 input('')

Python -- Gui编程 -- Qt库的使用 -- 布局与基本控件的更多相关文章

  1. Python -- Gui编程 -- Qt库的使用 -- 配置资源文件

    1.源文件(qtRes.py) import sys from PyQt4 import QtCore, QtGui, uic class MyDialog(QtGui.QDialog): def _ ...

  2. Python -- Gui编程 -- Qt库的使用 -- 菜单与对话框

    1.菜单 import sys from PyQt4 import QtCore, QtGui class MyWindow(QtGui.QMainWindow): def __init__(self ...

  3. C/C++ -- Gui编程 -- Qt库的使用 -- HelloWorld

    1.纯代码写对话框HelloWorld 创建空Qt工程,添加C++源文件main.cpp 需要设置编码以支持中文 -----源代码main.cpp----- #include <QApplica ...

  4. C/C++ -- Gui编程 -- Qt库的使用 -- Qt窗体的类型状态布局

    -----工程WindowTest----- 1.-----窗体类型type.cpp----- #include <QtGui> int main(int argc, char * arg ...

  5. C/C++ -- Gui编程 -- Qt库的使用 -- 理解主窗体构造函数

    MyWidget做父窗体 MyWidget的构造函数中可以手动添加组件 Ui::MyWidget存放子部件 Ui::MyWidget执行setupUi()函数为子部件开辟空间,指定父窗体 MyWidg ...

  6. C/C++ -- Gui编程 -- Qt库的使用 -- 标准对话框

    -----mywidget.cpp----- #include "mywidget.h" #include "ui_mywidget.h" #include & ...

  7. C/C++ -- Gui编程 -- Qt库的使用 -- 信号与槽 -- 欢迎界面

    程序运行先显示一个对话框,确定进入主程序 1.新建Qt工程,类MyWidget,基类QWidget 2.新建设计师界面类MyDialog,基类QDialog 3.-----main.cpp----- ...

  8. C/C++ -- Gui编程 -- Qt库的使用 -- 信号与槽的关联

    Qt信号与槽的三种关联方法:1.设计界面关联,编辑信号/槽,自动关联 2.手动关联(1).头文件中定义槽 -----mywidget.h----- #ifndef MYWIDGET_H #define ...

  9. C/C++ -- Gui编程 -- Qt库的使用 -- Qt5总结

    主要变化: 1.与Qt4相比,Qt5可以直接显示中文不需要手工转码2.Qt5模块发生变化,大部分组件并入widgets模块 注意事项:工程文件加一句greaterThan(QT_MAJOR_VERSI ...

随机推荐

  1. VS2010编译错误:是否忘记了向源中添加“#include "stdafx.h

    VS2010编译错误:是否忘记了向源中添加“#include "stdafx.h 编译提示:fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加“# ...

  2. Hibernate 的复杂用法HibernateCallback

    HibernateTemplate还提供了一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式.HibernateTemplate的灵活访问方式可通过如下两个方法完成: ...

  3. 团队博客-第三周:需求改进&系统设计(科利尔拉弗队)

    针对课堂讨论环节老师和其他组的问题及建议,对修改选题及需求进行修改 需求规格说明书: 1.打开网页,弹出询问时候创建账号.是:分配数字组成账号,用户填写密码,确定登录进入首页:否,用已有账号登录(传参 ...

  4. 论文笔记(3)-Extracting and Composing Robust Features with Denoising Autoencoders

    这篇文章是Bengio研究的在传统的autoencoder基础上增加了噪声参数,也就是说在输入X的时候,并不直接用X的数据,而是按照一定的概率来清空输入为0.paper中的名词为corrupted.这 ...

  5. ruby,gem,rails之间的关系

    Q:ruby,gem,rails之间的关系? 简单点说:Ruby是一种脚本语言,Gem是基于Ruby的一些开发工具包,Rails也算是一组Gem,专门用来做网站的.不同的Gem可能会依赖不同的Ruby ...

  6. C# 委托和事件,简单示例说明问题

    先看看示例效果 按照国际惯例,得先说说概念. 委托(C# 编程指南) 事件(C# 编程指南) 以上内容来自MSDN. 委托源码 [委托] 概念和代码都有了.剩下的就是应用了,要是只知道概念不会用,那还 ...

  7. Day 22 面向对象知识.

    https://www.cnblogs.com/bigberg/p/7252349.html #类方法,静态方法, 属性方法. 类有两种作用:属性引用 和实例化.属性引用(类名.属性)class pe ...

  8. 简单版nginx lua 完成定向流量分发策略

    本文链接:https://www.cnblogs.com/zhenghongxin/p/9131362.html 公司业务前端是使用 “分发层+应用层” 双层nginx架构,目的是为了提高缓存的命中率 ...

  9. 蒲公英(bzoj2724)(分块+区间众数)

    Input Output Sample Input 6 3 1 2 3 2 1 2 1 5 3 6 1 5 Sample Output 1 2 1 HINT \(n <= 40000\),$ m ...

  10. Django 项目 实现重定向并进行反向解析

    一.项目路由配置urls.py中 from django.conf.urls import include, url from django.contrib import admin # 匹配应用 u ...