zoukankan      html  css  js  c++  java
  • 读Pyqt4教程,带你入门Pyqt4 _006

    窗口组件是应用程序的基本构建块。PyQt4编程工具包拥有范围广泛的各种窗口组件。按钮、选择框、滑块、列表框等等,程序员工作所需要的一切。在教程的这部分中,我们将介绍一些有用的窗口组件。

    QCheckBox

    QCheckBox (复选框) 是一个由两种状态的窗口组件。 OnOff 。他是一个带标签的框。每段一个复选框被选中和或者清楚时,都将发射信号 stateChanged()

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    # checkbox.py
    
    import sys
    from PyQt4 import QtGui
    from PyQt4 import QtCore
    
    
    class Example(QtGui.QWidget):
    
        def __init__(self):
            super(Example, self).__init__()
    
            self.initUI()
    
        def initUI(self):
    
            self.setGeometry(300, 300, 250, 150)
            self.setWindowTitle('Checkbox')
    
            self.cb = QtGui.QCheckBox('Show title', self)
            self.cb.setFocusPolicy(QtCore.Qt.NoFocus)
            self.cb.move(10, 10)
            self.cb.toggle()
            self.connect(self.cb, QtCore.SIGNAL('stateChanged(int)'),
                self.changeTitle)
    
        def changeTitle(self, value):
    
            if self.cb.isChecked():
                self.setWindowTitle('Checkbox')
            else:
                self.setWindowTitle('')
    
    
    if __name__ == '__main__':
    
        app = QtGui.QApplication(sys.argv)
        ex = Example()
        ex.show()
        app.exec_()

    在我们的例子中,我们将创建一个复选框来切换窗口标题。

    self.cb = QtGui.QCheckBox('Show title', self)

    构建 QCheckBox

    self.cb.setFocusPolicy(QtCore.Qt.NoFocus)

    禁用 QCheckBox 的焦点。获由焦点的 QCheckBox 可以通过空格选择或者取消选择。

    self.cb.toggle()

    设置窗口标题,必须选中复选框。默认情况下,不设置窗口标题,复选框设为未选择。

    self.connect(self.cb, QtCore.SIGNAL('stateChanged(int)'), self.changeTitle)

    连接用户定义的 changeTitle()stateChanged() 信号。 changeTitle() 方法将切换窗口标题。

    切换按钮

    PyQt4没有切换按钮的窗口组件,为了创建切换按钮,我们使用特殊模式的 QPushButton 。切换按钮是指一个两种状态的按钮,按下和非按下。通过点击切换两种状态。在某种状态下来这种方式很合适。

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    # togglebutton.py
    
    import sys
    from PyQt4 import QtGui
    from PyQt4 import QtCore
    
    
    class Example(QtGui.QWidget):
    
        def __init__(self):
            super(Example, self).__init__()
    
            self.initUI()
    
        def initUI(self):
    
            self.color = QtGui.QColor(0, 0, 0)
    
            self.red = QtGui.QPushButton('Red', self)
            self.red.setCheckable(True)
            self.red.move(10, 10)
    
            self.connect(self.red, QtCore.SIGNAL('clicked()'), self.setColor)
    
            self.green = QtGui.QPushButton('Green', self)
            self.green.setCheckable(True)
            self.green.move(10, 60)
    
            self.connect(self.green, QtCore.SIGNAL('clicked()'), self.setColor)
    
            self.blue = QtGui.QPushButton('Blue', self)
            self.blue.setCheckable(True)
            self.blue.move(10, 110)
    
            self.connect(self.blue, QtCore.SIGNAL('clicked()'), self.setColor)
    
            self.square = QtGui.QWidget(self)
            self.square.setGeometry(150, 20, 100, 100)
            self.square.setStyleSheet("QWidget { background-color: %s }" %
                self.color.name())
    
            self.setWindowTitle('ToggleButton')
            self.setGeometry(300, 300, 280, 170)
    
    
        def setColor(self):
    
            source = self.sender()
    
            if source.text() == "Red":
                if self.red.isChecked():
                    self.color.setRed(255)
                else: self.color.setRed(0)
    
            elif source.text() == "Green":
                if self.green.isChecked():
                    self.color.setGreen(255)
                else: self.color.setGreen(0)
    
            else:
                if self.blue.isChecked():
                    self.color.setBlue(255)
                else: self.color.setBlue(0)
    
            self.square.setStyleSheet("QWidget { background-color: %s }" %
                self.color.name())
    
    
    
    if __name__ == '__main__':
    
        app = QtGui.QApplication(sys.argv)
        ex = Example()
        ex.show()
        app.exec_()

    这个例子中,我们创建了三个切换按钮和一个窗口组件,设置窗口组件的背景为黑色。这些切换按钮将切换颜色值的红绿蓝部分。背景色依赖于我们按下哪个切换按钮。

    self.color = QtGui.QColor(0, 0, 0)

    这是初始颜色,没有红绿蓝等于黑色。

    self.red = QtGui.QPushButton('Red', self)
    self.red.setCheckable(True)

    为了创建一个切换按钮,我们创建了一个 QPushButton 并通过 setCheckable 方法使之可选择。

    self.connect(self.red, QtCore.SIGNAL('clicked()'), self.setColor)

    连接 clicked 信号到自定义的方法。

    source = self.sender()

    获得切换的按钮。

    if source.text() == "Red":
        if self.red.isChecked():
            self.color.setRed(255)
        else: self.color.setRed(0)

    如果是红色按钮,我们更新颜色的红色部分。

    self.square.setStyleSheet("QWidget { background-color: %s }" %
        self.color.name())

    通过样式表修改背景色。

     

    本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 
    转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4542694.html

     

     

  • 相关阅读:
    HDU 1358 Period (KMP)
    POJ 1042 Gone Fishing
    Csharp,Javascript 获取显示器的大小的几种方式
    css text 自动换行的实现方法 Internet Explorer,Firefox,Opera,Safar
    Dynamic Fonts动态设置字体大小存入Cookie
    CSS Image Rollovers翻转效果Image Sprites图片精灵
    CSS three column layout
    css 自定义字体 Internet Explorer,Firefox,Opera,Safari
    颜色选择器 Color Picker,Internet Explorer,Firefox,Opera,Safar
    CSS TextShadow in Safari, Opera, Firefox and more
  • 原文地址:https://www.cnblogs.com/superdo/p/4542694.html
Copyright © 2011-2022 走看看