#QRadioButton 单选框

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

class RadioButtonDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle('QRadioButton')

        layout = QHBoxLayout(self) #同一个布局中只有一个radioButton是可以选中的
        radioButton1 = QRadioButton('男')
        radioButton1.setChecked(True)
        radioButton1.toggled.connect(self.radioButtonState) #toggled 记录选中和放开的事件

        radioButton2 = QRadioButton('女')
        radioButton2.toggled.connect(self.radioButtonState)

        layout.addWidget(radioButton1)
        layout.addWidget(radioButton2)

    def radioButtonState(self):
        radioButton = self.sender() #radioButton用于接收传进来的控件
        if radioButton.isChecked()==True:
            print('<'+radioButton.text()+'>被选中')
        else:
            print('<'+radioButton.text()+'>被取消选中')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = RadioButtonDemo()
    main.show()
    sys.exit(app.exec_())

#QCheckBox 复选框 3种状态,未选中 0,选中2,半选中(部分选中)1
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

class checkBoxDemo(QWidget):
    def __init__(self):
        super(checkBoxDemo,self).__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle('复选框')
        self.resize(300,30)

        layout = QHBoxLayout(self)#水平布局 这里要加个self下面就不用再写一句 self.setLayout(layout)了

        self.checkBox1 = QCheckBox('游泳')
        self.checkBox1.setChecked(True)
        self.checkBox1.toggled.connect(self.checkBoxState)

        self.checkBox2 = QCheckBox('音乐')
        self.checkBox2.toggled.connect(self.checkBoxState)
        self.checkBox3 = QCheckBox('王者')
        self.checkBox3.setTristate(True) #半选中
        self.checkBox3.setCheckState(Qt.PartiallyChecked) #设置半选中状态
        self.checkBox3.toggled.connect(self.checkBoxState)

        layout.addWidget(self.checkBox1)
        layout.addWidget(self.checkBox2)
        layout.addWidget(self.checkBox3)

    def checkBoxState(self,cb):
        check1status = self.checkBox1.text()+',isChecked='+str(self.checkBox1.isChecked())+',checkState='+str(self.checkBox1.checkState())+'\n'
        check2status = self.checkBox2.text()+',isChecked='+str(self.checkBox2.isChecked())+',checkState='+str(self.checkBox2.checkState())+'\n'
        check3status = self.checkBox3.text()+',isChecked='+str(self.checkBox3.isChecked())+',checkState='+str(self.checkBox3.checkState())+'\n'
        print(check1status,check2status,check3status)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = checkBoxDemo()
    main.show()
    sys.exit(app.exec_())

#QComboBox 下拉列表框控件
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

class ComboBoxDemo(QWidget):
    def __init__(self):
        super(ComboBoxDemo,self).__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle('下拉列表框')
        self.resize(300,100)

        layout = QVBoxLayout(self)
        self.label = QLabel('选择语言:')
        self.cb = QComboBox()
        self.cb.addItem('C++') #动态添加项
        self.cb.addItem('python')
        self.cb.addItem('Java')
        self.cb.addItem('C#')

        self.cb.currentIndexChanged.connect(self.comboboxChange) #信号是 currentIndexChanged
        layout.addWidget(self.label)
        layout.addWidget(self.cb)

    def comboboxChange(self,i):
        print(self.cb.itemText(i)+'被选中')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = ComboBoxDemo()
    main.show()
    sys.exit(app.exec_())

#滑块控件 QSlider
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class SliderDemo(QWidget):
    def __init__(self):
        super(SliderDemo,self).__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle('滑块控件')

        layout = QVBoxLayout(self)
        self.label = QLabel('hello world')
        self.label.setAlignment(Qt.AlignCenter)

        self.slider1 = QSlider(Qt.Horizontal)
        #设置开始位置
        self.slider1.setMinimum(12)
        #设置结束位置
        self.slider1.setMaximum(40)
        #设置步长
        self.slider1.setSingleStep(3)
        #设置当前位置
        self.slider1.setValue(15)
        #设置刻度间隔
        self.slider1.setTickInterval(3)
        #设置刻度位置(上下左右)
        self.slider1.setTickPosition(QSlider.TicksBelow)
        #绑定信号和槽
        self.slider1.valueChanged.connect(self.sliderChange)

        self.slider2 = QSlider(Qt.Vertical)
        # 设置开始位置
        self.slider2.setMinimum(10)
        # 设置结束位置
        self.slider2.setMaximum(36)
        # 设置步长
        self.slider2.setSingleStep(2)
        # 设置当前位置
        self.slider2.setValue(15)
        # 设置刻度间隔
        self.slider2.setTickInterval(2)
        # 设置刻度位置(上下左右)
        self.slider2.setTickPosition(QSlider.TicksRight)
        # 绑定信号和槽
        self.slider2.valueChanged.connect(self.sliderChange) #信号是valueChanged

        layout.addWidget(self.label)
        layout.addWidget(self.slider1)
        layout.addWidget(self.slider2)
    def sliderChange(self):
        size = self.sender().value() #这里用self.sender()接收传进来的控件
        self.label.setFont(QFont('Arial',size))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = SliderDemo()
    main.show()
    sys.exit(app.exec_())

#计数器控件 QSpinBox 控制数字增加和减少
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class SpinBoxDemo(QWidget):
    def __init__(self):
        super(SpinBoxDemo,self).__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle('QSpinBox演示')
        self.resize(300,100)

        layout = QVBoxLayout()
        self.label = QLabel('当前值:')
        self.label.setAlignment(Qt.AlignCenter)

        self.sb = QSpinBox()
        layout.addWidget(self.label)
        layout.addWidget(self.sb)
        self.sb.setValue(12) #初始值
        self.sb.setSingleStep(2) #步长
        self.sb.setMaximum(20) #最大
        self.sb.valueChanged.connect(self.valueChange) #绑定信号和槽
        self.setLayout(layout)
    def valueChange(self):
        self.label.setText('当前值:'+str(self.sb.value()))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = SpinBoxDemo()
    main.show()
    sys.exit(app.exec_())

#对话框 QDialog
#QMessageBox  弹框
#QColorDialog 显示颜色对话框
#QFileDialog  打开文件对话框
#QFontDialog  选择字体对话框

#QInputDialog 输入文本对话框

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class QDialogDemo(QMainWindow): #这里用的QMainWindow
    def __init__(self):
        super(QDialogDemo,self).__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle('QSpinBox演示')
        self.resize(300,200)

        self.button = QPushButton(self)
        self.button.setText('弹出对话框')
        self.button.move(50,50)
        self.button.clicked.connect(self.showDialog) #弹出一个模态对话框

    def showDialog(self):
        dialog = QDialog()
        button = QPushButton('确定',dialog)
        button.clicked.connect(dialog.close)
        button.move(50,50)
        dialog.setWindowTitle('对话框')
        dialog.setWindowModality(Qt.ApplicationModal)
        dialog.exec()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = QDialogDemo()
    main.show()
    sys.exit(app.exec_())

#各种不同类型消息对话框:关于,信息,警告,错误,问题(确认?)
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class QMessageBoxDemo(QWidget):
    def __init__(self):
        super(QMessageBoxDemo,self).__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle('QMessageBox演示')
        self.resize(300,200)

        layout = QVBoxLayout(self)
        self.button1 = QPushButton() #about dialog
        self.button1.move(50,50)
        self.button1.setText('about')
        self.button1.clicked.connect(self.showDialog)

        self.button2 = QPushButton() #show info dialog
        self.button2.setText('showInfo')
        self.button2.clicked.connect(self.showDialog)

        self.button3 = QPushButton()  # show warning dialog
        self.button3.setText('showWarning')
        self.button3.clicked.connect(self.showDialog)

        self.button4 = QPushButton()  # show error dialog
        self.button4.setText('showError')
        self.button4.clicked.connect(self.showDialog)

        self.button5 = QPushButton()  # show question dialog
        self.button5.setText('showQuestion')
        self.button5.clicked.connect(self.showDialog)

        layout.addWidget(self.button1)
        layout.addWidget(self.button2)
        layout.addWidget(self.button3)
        layout.addWidget(self.button4)
        layout.addWidget(self.button5)

    def showDialog(self):
        text = self.sender().text()
        if text == 'about':
            QMessageBox.about(self,'about','this is an about dialog')
        elif text =='showInfo':
            reply = QMessageBox.information(self,'info','this is an info dialog',QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
            print(reply)
        elif text == 'showWarning':
            QMessageBox.warning(self,'warning','this is a warning',QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
        elif text == 'showError':
            QMessageBox.critical(self,'error','this is a error',QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
        elif text == 'showQuestion':
            QMessageBox.question(self,'question','this is a question',QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = QMessageBoxDemo()
    main.show()
    sys.exit(app.exec_())

posted on 2020-08-26 18:15  94小渣渣  阅读(473)  评论(0编辑  收藏  举报