【问题标题】:Can't print a LineEdit value in python无法在 python 中打印 LineEdit 值
【发布时间】:2015-09-23 16:45:32
【问题描述】:

class Ui_Form(QtWidgets.QWidget):

def __init__(self):

    super(self.__class__, self).__init__()
    self.setupUi(self)


def setupUi(self, Form):
    Form.setObjectName("Form")
    Form.resize(410, 325)
    font = QtGui.QFont()
    font.setBold(True)
    font.setUnderline(False)
    font.setWeight(75)
    Form.setFont(font)
    self.gridLayout = QtWidgets.QGridLayout(Form)
    self.gridLayout.setObjectName("gridLayout")
    self.verticalLayout = QtWidgets.QVBoxLayout()
    self.verticalLayout.setObjectName("verticalLayout")
    self.label = QtWidgets.QLabel(Form)
    font = QtGui.QFont()
    font.setPointSize(12)
    self.label.setFont(font)
    self.label.setObjectName("label")
    self.verticalLayout.addWidget(self.label)
    self.label_4 = QtWidgets.QLabel(Form)
    self.label_4.setObjectName("label_4")
    self.verticalLayout.addWidget(self.label_4)
    self.lineEdit_2 = QtWidgets.QLineEdit(Form)
    self.lineEdit_2.setObjectName("lineEdit_2")
    self.verticalLayout.addWidget(self.lineEdit_2)
    self.label_5 = QtWidgets.QLabel(Form)
    self.label_5.setObjectName("label_5")
    self.verticalLayout.addWidget(self.label_5)
    self.lineEdit = QtWidgets.QLineEdit(Form)
    self.lineEdit.setObjectName("lineEdit")
    self.verticalLayout.addWidget(self.lineEdit)     
    spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
    self.verticalLayout.addItem(spacerItem)
    self.horizontalLayout = QtWidgets.QHBoxLayout()
    self.horizontalLayout.setObjectName("horizontalLayout")
    self.pushButton_2 = QtWidgets.QPushButton(Form)
    self.pushButton_2.setObjectName("pushButton_2")
    self.horizontalLayout.addWidget(self.pushButton_2)
    self.pushButton = QtWidgets.QPushButton(Form)
    self.pushButton.setObjectName("pushButton")
    self.horizontalLayout.addWidget(self.pushButton)
    self.verticalLayout.addLayout(self.horizontalLayout)
    self.progressBar = QtWidgets.QProgressBar(Form)
    self.progressBar.setProperty("value", 0)
    self.progressBar.setObjectName("progressBar")
    self.verticalLayout.addWidget(self.progressBar)
    self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)

    self.pushButton_2.clicked.connect(self.Entrar)
    self.pushButton.clicked.connect(self.Cadastrar)


    self.retranslateUi(Form)
    QtCore.QMetaObject.connectSlotsByName(Form)

def retranslateUi(self, Form):
    _translate = QtCore.QCoreApplication.translate
    Form.setWindowTitle(_translate("Form", "Gerenciador de Ordem de Serviço"))
    self.label.setText(_translate("Form", "Faça login ou cadastre-se"))
    self.label_4.setText(_translate("Form", "Login:"))
    self.label_5.setText(_translate("Form", "Senha:"))
    self.pushButton_2.setText(_translate("Form", "Entrar"))
    self.pushButton.setText(_translate("Form", "Cadastrar"))


def Entrar(self): #aqui faz a busca dos dados de cadastro, se corretos e cadastrados vai para programa principal
        log = self.lineEdit.text()
        passw = self.lineEdit_2.text()
        logqry = 'SELECT NomeUsu FROM registro WHERE NomeUsu ='  + "\""+ log +"\""
        passqry = 'SELECT SenhaProg FROM registro WHERE SenhaProg =' + "\"" + passw + "\""
        print(self.lineEdit.text())
        print(log)
        print(passw)
        print(logqry)
        print(passqry)

嗨,我有这部分代码,是一个 gui,并且做了一个方法,它应该打印 LineEdit 和 LineEdit_2 值的值,但是当我运行事件时,不显示什么都没有,就像 lineEdit 是空的一样。

谁能帮忙??如有语法错误,请见谅。

【问题讨论】:

  • 你确定lineEdit_2 不为空吗?
  • 是的,我运行程序,他们在两个 lineEdits 中都写了一些东西,但是当我按下什么都不打印的按钮时
  • 您真的在任何地方调用Entrar 方法吗?从这段代码看来你不是。
  • 我正在调用我在“self.pushButton_2.clicked.connect(self.Entrar)”行中发布的这个程序
  • 当我按下按钮时,程序打印两个 sql 查询,但 log 和 passw 变量为空

标签: python forms printing qlineedit


【解决方案1】:

logpassw 不是普通的 Python 字符串,它们是 QStrings,所以要打印它们,你必须先将它们转换为字符串。

log = str(self.lineEdit.text())
passw = str(self.lineEdit_2.text())

或者,如果您希望它们是QStrings,请按如下方式打印它们

print("%s\n%s" % log,passw)

【讨论】:

  • 这很奇怪。您希望这些字符串打印在哪里?
  • 真正的应用是使用这两个变量在sqlite3中进行查询,我只是在Python Shell中进行测试以测试为什么这些变量不会出现在我的sql查询中。
  • 那么我想,它与Python Shell有关。这些 shell 以及 IDLE 经常显示奇怪的输出(或者,在您的情况下,根本不显示 任何输出)。您可以尝试直接从控制台运行所有这些。
  • 那是不对的,因为我有另一个 Form 几乎可以做到这一点,并且可以正常工作。问题只是这种形式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多