天天看点

PyQt5 多行文本框与按钮类

QTextEdit

这个是多行文本框,可以显示多行文本内容,文本超出范围后 ,可以显示垂直滚动条,除了显示文本,还可以显示HTML文档。

PyQt5 多行文本框与按钮类
PyQt5 多行文本框与按钮类

代码:

# -*- coding: utf-8 -*-
import  sys
from PyQt5.QtWidgets import QApplication,QWidget,QTextEdit,QVBoxLayout,QPushButton

class TextEditDemo(QWidget):
     def __init__(self,parent = None):
         super(TextEditDemo,self).__init__(parent)
         self.setWindowTitle("QTextEdit 例子")
         self.resize(300,270)
         self.textEdit = QTextEdit()
         self.btnPress1 = QPushButton("显示文本")
         self.btnPress2 = QPushButton("显示Html")
         layout = QVBoxLayout()
         self.setLayout(layout)
         layout.addWidget(self.textEdit)
         layout.addWidget(self.btnPress1)
         layout.addWidget(self.btnPress2)
         self.btnPress1.clicked.connect(self.btnPress1_Clicked)
         self.btnPress2.clicked.connect(self.btnPress2_Clicked)

     def btnPress1_Clicked(self):
         self.textEdit.setPlainText("hello PyQt5!\n单击按钮")
     def btnPress2_Clicked(self):
         self.textEdit.setHtml("<font color = 'red ' size ='6'><red> Hello PyQt!\n单击按钮.</font>")
         self.textEdit.append("hello PyQt5!\n单击按钮")





if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = TextEditDemo()
    form.show()
    sys.exit(app.exec_())
           

 QAbstractButton

常见的按钮类:QPushButton、QToolButton、QRadioButton、QCheckBox 都是继承这个 QAbstractButton ,根据不同的场景通过图形显示出来。

PyQt5 多行文本框与按钮类
PyQt5 多行文本框与按钮类

QPushButton

常见的按钮就是使用的这个,还有一些响应按钮事件。

PyQt5 多行文本框与按钮类
PyQt5 多行文本框与按钮类
# -*- coding: utf-8 -*-
import  sys
from PyQt5.QtWidgets import *
from  PyQt5.QtCore import *
from  PyQt5.QtGui import *

class Form(QDialog):
    def __init__(self, parent=None):
        super(Form,self).__init__(parent)
        layout = QVBoxLayout()
        self.btn1 = QPushButton("Button1")
        self.btn1.setCheckable(True)  #设置选择效果
        self.btn1.toggle()  #状态切换
        self.btn1.clicked.connect(lambda :self.switchbtn(self.btn1))
        self.btn1.clicked.connect(self.btnstate)
        layout.addWidget(self.btn1)

        self.btn2 =  QPushButton("image")
        self.btn2.setIcon(QIcon(QPixmap("./images/12.jpg")))
        self.btn2.clicked.connect(lambda: self.switchbtn(self.btn2))
        layout.addWidget(self.btn2)

        self.btn3 = QPushButton("Disable")
        self.btn3.setEnabled(False)
        layout.addWidget(self.btn3)

        self.btn4 = QPushButton("&Download")
        self.btn4.setDefault(True)
        self.btn4.clicked.connect(lambda: self.switchbtn(self.btn4))
        layout.addWidget(self.btn4)

        self.setLayout(layout)
    def btnstate(self):
        if self.btn1.isChecked():
            print("button Pressed")
        else:
            print("button released")

    def switchbtn(self,btn):
        print("clicked button is " + btn.text())

if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = Form()
    form.show()
    sys.exit(app.exec_())
           

 QRadioButton

PyQt5 多行文本框与按钮类

这个按钮一般以添加在QGroupBox 或者在QButtonGroup中,这样在这个group中,变可以使用。

PyQt5 多行文本框与按钮类
# -*- coding: utf-8 -*-
import  sys
from PyQt5.QtWidgets import *
from  PyQt5.QtCore import *
from  PyQt5.QtGui import *


class Radiodemo(QWidget):
    def __init__(self, parent=None):
        super(Radiodemo, self).__init__(parent)
        layout = QHBoxLayout()
        self.btn1 = QRadioButton("吉法师")
        self.btn1.setChecked(True)
        self.btn1.toggled.connect(lambda :self.btnstate(self.btn1))
        layout.addWidget(self.btn1)

        self.btn2 = QRadioButton("icy")
        self.btn2.toggled.connect(lambda: self.btnstate(self.btn2))
        layout.addWidget(self.btn2)

        self.setLayout(layout)
        self.setWindowTitle("谁是凡尔赛奖获得者,请选择")

    def btnstate(self,btn):
        if btn.text() == "吉法师":
            if btn.isChecked() == True:
                print(btn.text() + " is NB")
            else:
                print(btn.text() + " is LG")

        if btn.text() == "icy":
            if btn.isChecked() == True:
                print(btn.text() + " is NB")
            else:
                print(btn.text() + " is LG")



if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = Radiodemo()
    form.show()
    sys.exit(app.exec_())
           

 QComboBox

PyQt5 多行文本框与按钮类
PyQt5 多行文本框与按钮类

本例子,使用了QSpinBox与QSlider 滑动条的使用。 

# -*- coding: utf-8 -*-
import  sys
from PyQt5.QtWidgets import *
from  PyQt5.QtCore import *
from  PyQt5.QtGui import *

class ComBoxDemo(QWidget):
    def __init__(self, parent=None):
        super(ComBoxDemo, self).__init__(parent)
        self.resize(300,150)
        self.setWindowTitle("QComBox 例子")
        layout = QVBoxLayout()
        self.lb1 = QLabel("")
        self.cb = QComboBox()
        self.cb.addItem("C")
        self.cb.addItem("C++")
        self.cb.addItems(["Java", "C#", "Python","Js"])
        self.cb.currentIndexChanged.connect(self.selectionchange)
        layout.addWidget(self.cb)
        layout.addWidget(self.lb1)
        #QSpinBox
        self.lb2 =QLabel("current Value: ")
        self.lb2.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.lb2)
        self.sp = QSpinBox()
        layout.addWidget(self.sp)
        self.sp.valueChanged.connect(self.valuechange)

        #QSlider
        self.lb3= QLabel("比卡丘不皮")
        self.lb3.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.lb3)
        # 水平方式
        self.sl = QSlider(Qt.Horizontal)
        # 最小与最大值
        self.sl.setMaximum(50)
        self.sl.setMinimum(10)
        #步长
        self.sl.setSingleStep(3)
        #当前值
        self.sl.setValue(20)
        #刻度位置,刻度在下方
        self.sl.setTickPosition(QSlider.TicksBelow)
        #设置刻度间隔
        self.sl.setTickInterval(5)
        layout.addWidget(self.sl)
        self.sl.valueChanged.connect(self.valuechangeS)
        self.setLayout(layout)

    def selectionchange(self,i):
        self.lb1.setText(self.cb.currentText())
        print("Items in the list are :")
        for count in range(self.cb.count()):
            print('item '+str(count) + " = "+self.cb.itemText(count))
            #prinf("Current index "+str(i)+ "selection changed"+self.cb.currentText())
            print("Current index {} selection changed {}".format(i,self.cb.currentText()))

    def valuechange(self):
        self.lb2.setText("current Value: " + str(self.sp.value()))
    def valuechangeS(self):
        print("current slider value = %s " % self.sl.value())
        size = self.sl.value()
        self.lb3.setFont(QFont("Arial",size))
if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = ComBoxDemo()
    form.show()
    sys.exit(app.exec_())
           

今天先记录到这里,希望能对你有些帮助。

继续阅读