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 ...
随机推荐
- 保留注释换行的python模块configparser
python语言用来解析配置文件的模块是ConfigParser,python3中是configparser模块,我在使用中发现write方法在将配置项重新写入文 件时,配置文件中的空行和注释行都会被 ...
- 配置使用sourcemap调试vue源码爬坑
环境: Google Chrome V72.0.3626.109 vue-dev V 2.6.10 爬坑的乐趣就不说了(我恨啊),以下说一下出坑要点 1. 在vue-dev的package.json ...
- hdu 2149
题目 巴什博奕(Bash Game) 巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规 定每次至少取一个,最多取m个.最后取光者得胜. 显然,如果n=m+1,那么由于一 ...
- hdu2844
题目 这道题,刚开始题没读懂,就是这句话:,A1,A2,A3...An and C1,C2,C3...Cn corresponding to the number of Tony's coins of ...
- 团队项目第六周——Alpha阶段项目复审(盐酸队)
Alpha阶段项目复审 小组 优点 缺点,bug报告 名次 天冷记得穿秋裤队 功能比较新颖,可以离线下载,做的比较完整 在下载电影时容易中断 1 只会嘤嘤嘤队 游戏和记单词的融合,也比较新颖 部分浏览 ...
- 解决Sublime Text 3中文显示乱码和语法着色问题 等问题
一:解决sublime中文乱码的问题 简单安装: 1.打开Sublime Text 3,按Ctrl+-打开控制行,复制粘贴以下python代码,然后回车运行. 2. 复制并粘贴如下代码: import ...
- Android-Activity跳转时动画
Activity跳转时动画,是在跳转Activity,或者在Activity结束返回 等,用到的进入效果: 第一种效果展示: 第一个Activity的代码: package liudeli.activ ...
- [Openwrt 项目开发笔记]:Openwrt平台搭建(一)补遗
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 昨晚上熬夜写了[Openwrt项目开发笔记]:O ...
- 前台ajax请求一次,后台代码执行了两次
问题: 后台使用Django,前台发布文章时使用ajax方式,后台执行代码将data数据取出存入数据库 经过排查,是提交按钮type写成了submit,需要写成button,真是 修改后测试 代码执行 ...
- jQuery插件开发的五种形态小结
关于jQuery插件的开发自己也做了少许研究,自己也写过多个插件,在自己的团队了也分享过一次关于插件的课.开始的时候整觉的很复杂的代码,现在再次看的时候就清晰了许多.这里我把我自己总结出来的东西分享出 ...