Python -- Gui编程 -- Qt库的使用 -- 布局与基本控件
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库的使用 -- 布局与基本控件的更多相关文章
- Python -- Gui编程 -- Qt库的使用 -- 配置资源文件
1.源文件(qtRes.py) import sys from PyQt4 import QtCore, QtGui, uic class MyDialog(QtGui.QDialog): def _ ...
- Python -- Gui编程 -- Qt库的使用 -- 菜单与对话框
1.菜单 import sys from PyQt4 import QtCore, QtGui class MyWindow(QtGui.QMainWindow): def __init__(self ...
- C/C++ -- Gui编程 -- Qt库的使用 -- HelloWorld
1.纯代码写对话框HelloWorld 创建空Qt工程,添加C++源文件main.cpp 需要设置编码以支持中文 -----源代码main.cpp----- #include <QApplica ...
- C/C++ -- Gui编程 -- Qt库的使用 -- Qt窗体的类型状态布局
-----工程WindowTest----- 1.-----窗体类型type.cpp----- #include <QtGui> int main(int argc, char * arg ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 理解主窗体构造函数
MyWidget做父窗体 MyWidget的构造函数中可以手动添加组件 Ui::MyWidget存放子部件 Ui::MyWidget执行setupUi()函数为子部件开辟空间,指定父窗体 MyWidg ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 标准对话框
-----mywidget.cpp----- #include "mywidget.h" #include "ui_mywidget.h" #include & ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 信号与槽 -- 欢迎界面
程序运行先显示一个对话框,确定进入主程序 1.新建Qt工程,类MyWidget,基类QWidget 2.新建设计师界面类MyDialog,基类QDialog 3.-----main.cpp----- ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 信号与槽的关联
Qt信号与槽的三种关联方法:1.设计界面关联,编辑信号/槽,自动关联 2.手动关联(1).头文件中定义槽 -----mywidget.h----- #ifndef MYWIDGET_H #define ...
- C/C++ -- Gui编程 -- Qt库的使用 -- Qt5总结
主要变化: 1.与Qt4相比,Qt5可以直接显示中文不需要手工转码2.Qt5模块发生变化,大部分组件并入widgets模块 注意事项:工程文件加一句greaterThan(QT_MAJOR_VERSI ...
随机推荐
- hibernate的一级缓存问题
1.证明一级缓存的问题 输出结果: 只发出一条查询语句 第二条查询语句没有执行 因为第一条查询语句缓存的存在 2. 移除缓存: 输出结果: 3.一级缓存的快照 就是对一级缓存的数据备份 保证数据库的 ...
- line tension
<!DOCTYPE html> <html> <head> <title>tension</title> <script type=& ...
- Delphi XE10 dxLayoutControl 控件应用指南
https://www.cnblogs.com/Bonny.Wong/p/7440288.html DevExpress VCL套件是一套非常强大的界面控件,可惜关于Delphi开发方面的说明太少,有 ...
- c# is 和 as 的区别和使用
1:is 是判断类型,用于检查对象是否与给定类型兼容,不成功则不会抛出异常,如果兼容则返回true,如果不兼容则返回false.在进行类型转换之前用 f (P_obj is System.String ...
- Java各国首都列表
国 家 名 称 首 都 中华人民共和国 People's Republic of China 北京 Beijing 蒙古 Mongolia 乌兰巴托 Elggydggmgj 朝鲜 Democrati ...
- mysql恢复备份错误:Got a packet bigger than 'max_allowed_packet' bytes
最近恢复mysql数据库备份时,出现了一个错误:Got a packet bigger than 'max_allowed_packet' bytes 该问题主要是由于mysql的my.ini文件中设 ...
- EF简易教程,从建表到表间关系
唐大兵博客 唐大兵的博客里记录了EF Code First从建表到表之间关系的详细内容. 汪杰的博客(EF里一对一.一对多.多对多关系的配置和级联删除) 汪杰的博客更简洁,但不够充实,读懂了唐大兵博客 ...
- DevExpress WinForms Controls 学习系列1
一个偶然的机会,接触到DevExpress.项目是WinForm的,应用了DevExpress.为了使项目具备维护开发的生命力,我觉得有必要系统的学习一下DevExpress,今天是学习笔记的第一篇. ...
- gridview获取选中行索引及当前行数据
gridview获取选中行索引及当前行数据 一.非直接绑定数据: <!--前台传值--> <asp:TemplateField HeaderText="操作"&g ...
- [原创] 基础中的基础(二):C/C++ 中 const 修饰符用法总结
在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家梳理一下知识,给大家一点点帮助.作者是菜鸟一 ...