PyQt学习笔记(2)--Dumb Dialog

   对话框在 GUI编程中是比较重要的控件,这里按照对话框的“智能”水平,把对话框 分为”Dumb  Dialogs,Standard  Dialogs,Smart  Dialogs”三种。

   首先介绍相关的函数:

   FontSizeLabel = QtGui.QLabel("部件提示"):创建一个标签部件

   FontstyleComboBox = QtGui.QComboBox():创建一个下拉样式的部件

   FontstyleComboBox.addItems():为下拉样式部件添加元素

   FontSizeSpinBox =QtGui.QSpinBox():上下调节一定的数字范围部件

   FontSizeSpinBox.setRange(0, 90):为数字范围部件设置范围

   FontEffectCheckBox =QtGui.QCheckBox("部件提示"):设置勾选部件

   okButton = QtGui.QPushButton("部件提示"):创建一个按钮部件

   Layout.addWidget(a):添加控件a到Layout中

   self.setLayout(Layout):为自身添加布局Layout

      PyQt的QHBoxLayout、QVBoxLayout 与QGridLayout三种布局的区别:

  (1)QHBoxLayout 类将各部件水平排列

   (2)  QVBoxLayout 类将各部件垂直排列

   (3)  QGridLayout类将各个widget(部件)按grid(网格)排列。 


   先介绍 Dumb  Dialogs。也就是比较傻瓜式的对话框,看一个例子:我们要设计一个简单的字体设置对话框,要求可选择字体,和设置字体大小。

   我们要设计一个简单的字体设置对话框,要求可选择字体,和设置字体大小。

#!/usr/bin/env python
#coding=utf-8
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class FontPropertiesDlg(QDialog):
    #初始化
    def __init__(self, parent=None):
            #super函数完成对话框的初始化
            super(FontPropertiesDlg, self).__init__(parent)
            FontStyleLabel = QLabel(u"中文字体:")
            FontstyleComboBox = QComboBox()
            FontstyleComboBox.addItems([u"宋体", u"黑体", u"仿宋",
                                        u"隶书", u"楷书"])
            FontSizeLabel = QLabel(u"字体大小:")
            FontSizeSpinBox = QSpinBox()
            FontSizeSpinBox.setRange(0, 90)
            FontEffectCheckBox =QCheckBox(u"使用特效")
            okButton = QPushButton(u"确定")
            cancelButton = QPushButton(u"取消")
            #确定控件的布局
            buttonLayout = QHBoxLayout()
            buttonLayout.addStretch()
            buttonLayout.addWidget(okButton)
            buttonLayout.addWidget(cancelButton)
            layout = QGridLayout()
            layout.addWidget(FontStyleLabel, 0, 0)
            layout.addWidget(FontstyleComboBox, 0, 1)
            layout.addWidget(FontSizeLabel, 1, 0)
            layout.addWidget(FontSizeSpinBox, 1, 1)
            layout.addWidget(FontEffectCheckBox,1,2)
            layout.addLayout(buttonLayout, 2, 0,1,3)
            self.setLayout(buttonLayout)
            self.setLayout(layout)
            #窗口标题
            self.setWindowTitle(u"字体")
app = QApplication(sys.argv)
app.aboutToQuit.connect(app.deleteLater)
font= FontPropertiesDlg()
font.show()
app.exec_()
运行结果如下:


   程序的内容就是创建一个对话框的窗体,其中创建了一些控件,然后通过 layout方法来在窗体上布局这些控件,最后是创建应用和消息循环。下面看看 layout是如何布局的。

   这里用到了两个 layout 一个是 buttonlayout,一个 layout,其中的buttonlayout是放到了  layout上。

buttonLayout  =  QHBoxLayout()
buttonLayout.addStretch()
buttonLayout.addWidget(okButton)
buttonLayout.addWidget(cancelButton)
   button是水平放置的,QHBoxLayout,而且用到了  Stretch,也就是说这里的确定和取消按钮虽然是水平放置的,但是由于 stretch的作用,两个按钮会靠右放置,而且随着窗口大小的改变,也是靠右边的,如上图。(如果把上面第二句去掉的话,两个按钮的显示就变了,左右平局分布)。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值