한국어
파이썬
 

PyQt4 [PyQt4]여러가지 버튼 예제

pjk 2014.08.29 09:58 조회 수 : 11742

K-20140829-354437.png

 

예제 소스코드

#!/usr/bin/env python
  
  
#############################################################################
##
## Copyright (C) 2010 Riverbank Computing Limited.
## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
## All rights reserved.
##
## This file is part of the examples of PyQt.
##
## $QT_BEGIN_LICENSE:BSD$
## You may use this file under the terms of the BSD license as follows:
##
## "Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions are
## met:
##   * Redistributions of source code must retain the above copyright
##     notice, this list of conditions and the following disclaimer.
##   * Redistributions in binary form must reproduce the above copyright
##     notice, this list of conditions and the following disclaimer in
##     the documentation and/or other materials provided with the
##     distribution.
##   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
##     the names of its contributors may be used to endorse or promote
##     products derived from this software without specific prior written
##     permission.
##
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
## $QT_END_LICENSE$
##
#############################################################################
  
  
from PyQt4 import QtCore, QtGui
  
  
class Window(QtGui.QWidget):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent)
  
        grid = QtGui.QGridLayout()
        grid.addWidget(self.createFirstExclusiveGroup(), 0, 0)
        grid.addWidget(self.createSecondExclusiveGroup(), 1, 0)
        grid.addWidget(self.createNonExclusiveGroup(), 0, 1)
        grid.addWidget(self.createPushButtonGroup(), 1, 1)
        self.setLayout(grid)
  
        self.setWindowTitle("Group Box")
        self.resize(480, 320)
  
    def createFirstExclusiveGroup(self):
        groupBox = QtGui.QGroupBox("Exclusive Radio Buttons")
  
        radio1 = QtGui.QRadioButton("&Radio button 1")
        radio2 = QtGui.QRadioButton("R&adio button 2")
        radio3 = QtGui.QRadioButton("Ra&dio button 3")
  
        radio1.setChecked(True)
  
        vbox = QtGui.QVBoxLayout()
        vbox.addWidget(radio1)
        vbox.addWidget(radio2)
        vbox.addWidget(radio3)
        vbox.addStretch(1)
        groupBox.setLayout(vbox)
  
        return groupBox
  
    def createSecondExclusiveGroup(self):
        groupBox = QtGui.QGroupBox("E&xclusive Radio Buttons")
        groupBox.setCheckable(True)
        groupBox.setChecked(False)
  
        radio1 = QtGui.QRadioButton("Rad&io button 1")
        radio2 = QtGui.QRadioButton("Radi&o button 2")
        radio3 = QtGui.QRadioButton("Radio &button 3")
        radio1.setChecked(True)
        checkBox = QtGui.QCheckBox("Ind&ependent checkbox")
        checkBox.setChecked(True)
  
        vbox = QtGui.QVBoxLayout()
        vbox.addWidget(radio1)
        vbox.addWidget(radio2)
        vbox.addWidget(radio3)
        vbox.addWidget(checkBox)
        vbox.addStretch(1)
        groupBox.setLayout(vbox)
  
        return groupBox
  
    def createNonExclusiveGroup(self):
        groupBox = QtGui.QGroupBox("Non-Exclusive Checkboxes")
        groupBox.setFlat(True)
  
        checkBox1 = QtGui.QCheckBox("&Checkbox 1")
        checkBox2 = QtGui.QCheckBox("C&heckbox 2")
        checkBox2.setChecked(True)
        tristateBox = QtGui.QCheckBox("Tri-&state button")
        tristateBox.setTristate(True)
        tristateBox.setCheckState(QtCore.Qt.PartiallyChecked)
  
        vbox = QtGui.QVBoxLayout()
        vbox.addWidget(checkBox1)
        vbox.addWidget(checkBox2)
        vbox.addWidget(tristateBox)
        vbox.addStretch(1)
        groupBox.setLayout(vbox)
  
        return groupBox
  
    def createPushButtonGroup(self):
        groupBox = QtGui.QGroupBox("&Push Buttons")
        groupBox.setCheckable(True)
        groupBox.setChecked(True)
  
        pushButton = QtGui.QPushButton("&Normal Button")
        toggleButton = QtGui.QPushButton("&Toggle Button")
        toggleButton.setCheckable(True)
        toggleButton.setChecked(True)
        flatButton = QtGui.QPushButton("&Flat Button")
        flatButton.setFlat(True)
  
        popupButton = QtGui.QPushButton("Pop&up Button")
        menu = QtGui.QMenu(self)
        menu.addAction("&First Item")
        menu.addAction("&Second Item")
        menu.addAction("&Third Item")
        menu.addAction("F&ourth Item")
        popupButton.setMenu(menu)
  
        newAction = menu.addAction("Submenu")
        subMenu = QtGui.QMenu("Popup Submenu", self)
        subMenu.addAction("Item 1")
        subMenu.addAction("Item 2")
        subMenu.addAction("Item 3")
        newAction.setMenu(subMenu)
  
        vbox = QtGui.QVBoxLayout()
        vbox.addWidget(pushButton)
        vbox.addWidget(toggleButton)
        vbox.addWidget(flatButton)
        vbox.addWidget(popupButton)
        vbox.addStretch(1)
        groupBox.setLayout(vbox)
  
        return groupBox
  
  
if __name__ == '__main__':
  
    import sys
  
    app = QtGui.QApplication(sys.argv)
    clock = Window()
    clock.show()
    sys.exit(app.exec_())

 

이 글과 연관된 다른 글
  1. [2015/04/22] QML 및 Window 투명처리 by makersweb (2839)
  2. [2015/04/01] [pyqt4]QTimer 예제 - 버튼을 누르면 3초후 함수 또는 메소드 호출 by makersweb (8115)
  3. [2015/03/24] Python + QML with PyQt4 by makersweb (7043)
  4. [2014/09/02] [PyQt4]개발 프로그램 버전표시 메세지 박스 by pjk (6968)
  5. [2014/08/26] [PyQt4]스레드 및 ProgressBar 예제 코드 by pjk (6546)
번호 제목 글쓴이 날짜 조회 수
23 Qt For Python(PySide2) QML 프로젝트 예제 file makersweb 2019.10.17 856
22 명령어 한줄로 내컴퓨터를 웹서버로 file 운영자 2019.01.25 1098
21 pydbus 바인딩을 이용하여 서비스 데몬과 D-Bus통신 file makersweb 2018.03.12 692
20 Boost Python을 이용하여 python을 위한 C++ API 바인딩 [5] file makersweb 2017.01.08 5337
19 [Python]EXE또는 DLL파일의 버전정보를 알아내기위한 몇가지 방법 makersweb 2015.06.25 6733
18 QML 및 Window 투명처리 file makersweb 2015.04.22 2839
17 [pyqt4]QTimer 예제 - 버튼을 누르면 3초후 함수 또는 메소드 호출 makersweb 2015.04.01 8115
16 Python + QML with PyQt4 makersweb 2015.03.24 7043
15 print를 로그파일로 생성하기 (log출력 Redirection) makersweb 2015.03.18 4237
14 외부 프로그램 실행 pjk 2015.02.10 5978
13 우분투에 Python새 버전 설치 사용법 pjk 2015.02.10 2524
12 How to Use Freeze pjk 2014.09.06 4102
11 [PyQt4]개발 프로그램 버전표시 메세지 박스 pjk 2014.09.02 6968
» [PyQt4]여러가지 버튼 예제 file pjk 2014.08.29 11742
9 Python 문자열 관련 함수 레퍼런스 pjk 2014.08.29 5655
8 [PyQt4]스레드 및 ProgressBar 예제 코드 file pjk 2014.08.26 6546
7 [PyQt4]multiprocess 예제 코드 pjk 2014.08.26 7221
6 [PyQt4]마우스 클릭 이벤트 예제 코드 pjk 2014.08.26 6170
5 [PyQt4]폴더 또는 파일을 드레그하여 그 경로를 LineEdit로 가져오기 file pjk 2014.08.22 7148
4 다른 디렉터리의 파일(모듈) import 하기 pjk 2014.08.22 4518