#用掩码限制QLineEdit控件的输入
    # A ASCII字母字符是必须输入的(A-Z ,a-z)
    # a ASCII字母字符是允许输入的,但不是必须的(A-Z,a-z)
    # N ASCII字母字符是必须输入的(A-Z ,a-z ,0-9)
    # n ASCII字母字符是允许输入的,但不是必须的(A-Z,a-z,0-9)
    # X 任何字符都是必须输入的
    # x 任何字符都是允许输入的 ,但不是必须的
    # 9 必须输入(0-9)
    # 0 允许输入,但不是必须的(0-9)
    # D 必须输入(1-9)
    # d 允许输入,但不是必须(1-9)
    # # ASCII 数字字符和加减符号是允许输入的,但不是必需的
    # H 十六进制格式字符是必须输入的(A-F,a-f,0-9)
    # h 只能输入同上,但不是必须输入的
    # B 二进制字符是必须输入的(0,1)
    # b 允许输入二进制 但不是必须的,意思是可以为空
    # > 所有字母字符都大写
    # < 都小写
    # ! 关闭大小写转换
    # \ 使用\ 转义上面列出的字符

#掩码来控制文本框
from PyQt5.QtWidgets import *
import sys
class QLineEditMask(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('用掩码来控制文本框')
        formlayout = QFormLayout()

        lineEdit_ip = QLineEdit()
        lineEdit_mac = QLineEdit()
        lineEdit_date = QLineEdit()
        lineEdit_license = QLineEdit()

        lineEdit_ip.setInputMask('000.000.000.000;_') #只能输入0-9 蛋是 还要限定到最大 255 没有内容就显示分号后面的下划线
        lineEdit_mac.setInputMask('HH:HH:HH:HH:HH:HH;_')
        lineEdit_date.setInputMask('0000-00-00')
        lineEdit_license.setInputMask('>AAAAA-AAAAA-AAAAA-AAAAA;#')

        formlayout.addRow('ip地址',lineEdit_ip)
        formlayout.addRow('mac地址',lineEdit_mac)
        formlayout.addRow('日期掩码',lineEdit_date)
        formlayout.addRow('许可证掩码',lineEdit_license)

        self.setLayout(formlayout)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainFrame = QLineEditMask()
    mainFrame.show()
    sys.exit(app.exec_())

#QLineEdit 综合案例
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
class QLineEditDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        lineEdit1 = QLineEdit()
        lineEdit1.setValidator(QIntValidator())
        lineEdit1.setMaxLength(4) #不超过9999
        lineEdit1.setAlignment(Qt.AlignRight)
        lineEdit1.setFont(QFont('Arial',12))

        lineEdit2 = QLineEdit()
        lineEdit2.setValidator(QDoubleValidator(0.99,99.99,2))
        lineEdit2.setAlignment(Qt.AlignRight)

        lineEdit3 = QLineEdit()
        lineEdit3.setInputMask('99_9999_999999;#')

        lineEdit4 = QLineEdit()
        lineEdit4.textChanged.connect(self.textChanged) #绑定信号与槽

        lineEdit5 = QLineEdit()
        lineEdit5.setEchoMode(QLineEdit.Password)

        lineEdit6 = QLineEdit('hello')
        lineEdit6.setReadOnly(True)

        formlayout = QFormLayout()
        formlayout.addRow('整数校验',lineEdit1)
        formlayout.addRow('浮点数校验',lineEdit2)
        formlayout.addRow('掩码校验',lineEdit3)
        formlayout.addRow('文本编号',lineEdit4)
        formlayout.addRow('密码回显',lineEdit5)
        formlayout.addRow('只读',lineEdit6)

        self.setLayout(formlayout)
        self.setWindowTitle('QLineEdit综合案例')

    #定义2个槽
    def textChanged(self,text):
        print('输入的内容:'+text)
    def enterPress(self):
        print('已输入内容')

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

#多行文本  QTextEdit控件
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
class QTextEditDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('多行文本框使用')

        self.textEdit = QTextEdit()
        self.buttonText = QPushButton('显示文本')
        self.buttonText.clicked.connect(self.onClick_ButtonText)
        self.buttonHtml = QPushButton('显示Html')
        self.buttonHtml.clicked.connect(self.onClick_ButtonHtml)
        self.buttonText1 = QPushButton('获取文本')
        self.buttonText1.clicked.connect(self.onClick_ButtonToText)
        self.buttonHtml1 = QPushButton('获取Html')
        self.buttonHtml1.clicked.connect(self.onClick_ButtonToHtml)

        layout = QVBoxLayout() #垂直布局
        layout.addWidget(self.textEdit)
        layout.addWidget(self.buttonText)
        layout.addWidget(self.buttonHtml)
        layout.addWidget(self.buttonText1)
        layout.addWidget(self.buttonHtml1)

        self.setLayout(layout)
    def onClick_ButtonText(self):
        self.textEdit.setPlainText('hello world!')

    def onClick_ButtonHtml(self):
        self.textEdit.setHtml('<a href="#">hello world</a>')

    def onClick_ButtonToText(self):
        print(self.textEdit.toPlainText())

    def onClick_ButtonToHtml(self):
        print(self.textEdit.toHtml()) #这里不是单纯的显示了超链接 <a...内容,还放了很多包括<html>...等

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

#按钮控件QPushButton AToolButton QRadioButton QCheckBox 都继承自 QAbstractButton
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class QPushButtonDemo(QDialog):#对话框
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle('按钮控件')

        self.button1 = QPushButton('button1')
        self.button1.setText('button1 haha')
        self.button1.setCheckable(True) #设置了以后 就可以当做checkbox复选框来用,按一下选中,按钮颜色变化,再按一下,就变成普通颜色
        self.button1.toggle() #toggle 是开关的意思
        self.button1.clicked.connect(lambda:self.whitchButton(self.button1)) #这里用了一个lambda函数来绑定槽,connect里只能用函数名
        self.button1.clicked.connect(self.buttonState)
        # self.button1.clicked.connect(self.whitchButton) #这里不能直接把方法做connect的参数,因为whitchButton还要传参数btn进去

        #文本前显示图像
        self.button2 =QPushButton('button2 haha ')
        self.button2.setIcon(QIcon(QPixmap('./python.jpg')))
        self.button2.clicked.connect(lambda: self.whitchButton(self.button2))

        #设置按钮不可用 setEnable
        self.button3 = QPushButton('button3 ')
        self.button3.setEnabled(False)

        self.button4 = QPushButton('&button4 ')
        self.button4.setDefault(True)

        layout = QVBoxLayout()
        layout.addWidget(self.button1)
        layout.addWidget(self.button2)
        layout.addWidget(self.button3)
        layout.addWidget(self.button4)
        self.setLayout(layout)

    def buttonState(self):
        if self.button1.isChecked():
            print('按钮1被选中')
        else:print('按钮1未被选中')
    def whitchButton(self,btn):
        print('被单击的按钮是<'+btn.text()+'>')

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

posted on 2020-08-25 18:09  94小渣渣  阅读(322)  评论(0编辑  收藏  举报