使用PyQt

时间:2019-03-20 13:29:19

标签: python pyqt4

我有一个python脚本,它将订单号作为输入,输出将是物料成本,税金和总计。也是物品寄出的地址。 在此程序中,我具有以下代码来接受输入

Oname = '1'  #something that doesn't validate
while True:
    Oname = input("Please enter the Order number: ").upper() #ask for order number
    if not re.match(r"\b[A-Z]{2}[-][0-9]{6}\b", Oname): #check if the Order number is in the right format
        print ("Error! Please enter Order in format 'RS-XXXXXX'") #if the Order number is not in the right format, keep asking
    else:
        break

这很好用。但是,我想使用弹出式输入框(带有pyQT4)而不是命令行来实现这一点(我与他人共享此信息,并且他们更喜欢使用弹出框而不是命令行)。 另外,我需要在弹出窗口上单击一个取消按钮,如果用户单击它(用户可能已经改变主意并且不想运行该程序),则python脚本应该停止。

以上两项绝对必要。 愿望清单上的另一个项目是,输入字段旁边应有一个复选框,称为“这是礼物”。如果用户选中此框,则仅应打印“此项目已被运送到xxxxx地址”的消息。计算价格的代码部分无需运行。

1 个答案:

答案 0 :(得分:0)

对不起,我有PyQt5。 试试吧:

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

class Demo(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        centralWidget = QWidget()
        self.setCentralWidget(centralWidget)

        self.label = QLabel("Please enter Order in format `RS-XXXXXX`:", alignment=Qt.AlignCenter)
        self.chBox = QCheckBox("<-is this a gift item")

        self.lineEdit= QLineEdit()

        # a cancel button
        self.lineEdit.setClearButtonEnabled(True)

        self.lineEdit.setToolTip("press RETURN to check")
        self.lineEdit.setStyleSheet(""" QLineEdit {border: None;
                                                   font-size: 14px;} """)
        # lineEdit with validation                                              
        self.lineEdit.setInputMask('AA-999999')    
        self.lineEdit.returnPressed.connect(lambda : self.findText(self.lineEdit.text()))

        self.textBrowser = QTextBrowser()
        self.button = QPushButton("click me to check")
        self.button.clicked.connect(lambda : self.findText(self.lineEdit.text()))

        self.grid = QGridLayout(centralWidget)
        self.grid.addWidget(self.label,       0, 0, 1, 2)  
        self.grid.addWidget(self.chBox,       1, 0)
        self.grid.addWidget(self.lineEdit,    1, 1)
        self.grid.addWidget(self.textBrowser, 2, 0, 1, 2)   
        self.grid.addWidget(self.button,      3, 0, 1, 2)

    def findText(self, text=None):
        if self.lineEdit.hasAcceptableInput():
            self.textBrowser.append(text)      
            if self.chBox.isChecked():  
                self.textBrowser.insertPlainText("; chBox -> True. Is this a gift item.")        


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

enter image description here