PyQt5:如何通过传递引用/值来检查我的文本框是否为空?

库玛

是否要检查textbox1是否为空?如何通过参考?

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

class My_Process(QWidget):
    def __init__(self,*args):
        self.textbox = QLineEdit()

    def checkstatus(self):
        if self.textbox.text() =="":
            print("Empty Value Not Allowed")
            self.textbox.setFocus()
        else:
            print(" Your Text : ",textbox.text())
#----------------------------------------------------------------------------------------------
class Mainprg(QMainWindow):
    def __init__(self):

        super().__init__()
        self.tb = My_Process(self)
        self.text1 = QLineEdit(self)
        self.text2 = QLineEdit(self)
        self.text1.setGeometry(100,100,300,30)
        self.text2.setGeometry(100,200,300,30)
        self.text1.editingFinished.connect(self.tb.checkstatus)

        self.showMaximized()

app = QApplication(sys.argv)
window = Mainprg()
sys.exit(app.exec_())
弗里斯

对我来说,创建一个新类来进行验证令人困惑。我会做checkstatus一个Mainprg方法:

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

class Mainprg(QMainWindow):
    def __init__(self):

        super().__init__()
        self.text1 = QLineEdit(self)
        self.text2 = QLineEdit(self)

        self.setGeometry(300, 200, 600, 450)

        self.text1.setGeometry(100,100,300,30)
        self.text2.setGeometry(100,200,300,30)
        self.text1.editingFinished.connect(self.checkstatus)

        self.show()

    def checkstatus(self):
        if self.text1.text() == "":
            print("Empty Value Not Allowed")
            self.text1.setFocus()
        else:
            print(" Your Text : ", self.text1.text())

app = QApplication(sys.argv)
window = Mainprg()
sys.exit(app.exec_())

上面的代码可行,但您可能希望为多个QLineEdit提供更通用的功能。没有真正好的方法可以将参数传递给PyQt connect语句,因此大多数人都使用lambda:

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

class Mainprg(QMainWindow):
    def __init__(self):

        super().__init__()
        self.text1 = QLineEdit(self)
        self.text2 = QLineEdit(self)

        self.setGeometry(300, 200, 600, 450)

        self.text1.setGeometry(100,100,300,30)
        self.text2.setGeometry(100,200,300,30)
        self.text1.editingFinished.connect(lambda: self.checkstatus(self.text1))
        self.text2.editingFinished.connect(lambda: self.checkstatus(self.text2))

        self.show()

    def checkstatus(self, widget):
        if widget.text() == "":
            print("Empty Value Not Allowed")
            widget.setFocus()
        else:
            print(" Your Text : ", widget.text())

app = QApplication(sys.argv)
window = Mainprg()
sys.exit(app.exec_())

这段代码可以按照您希望的方式工作,但是如果text1为空并且尝试移至text2,则会遇到问题。您将获得“超出了最大递归深度”,因为该checkstatus方法被反复调用。为防止这种情况,您必须执行以下任一操作:

  1. 为QApplication的focusChanged事件创建处理程序
  2. 创建一个QValidator并将其应用于您的小部件 setValidator()

如果您决定上新课,可以尝试以下方法:

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

class My_Process():
    def __init__(self, widget):
        self.textbox = widget

    def checkstatus(self):
        if self.textbox.text() == "":
            print("Empty Value Not Allowed")
            self.textbox.setFocus()
        else:
            print(" Your Text : ", self.textbox.text())

class Mainprg(QMainWindow):
    def __init__(self):

        super().__init__()

        self.text1 = QLineEdit(self)
        self.text2 = QLineEdit(self)

        self.process = My_Process(self.text1)

        self.setGeometry(300, 200, 600, 450)

        self.text1.setGeometry(100,100,300,30)
        self.text2.setGeometry(100,200,300,30)
        self.text1.editingFinished.connect(self.process.checkstatus)

        self.show()

app = QApplication(sys.argv)
window = Mainprg()
sys.exit(app.exec_())

要传递text1给该类,请在init方法中添加一个参数

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查文本框是否为空?

如何正确检查文本框是否为空?

jQuery如何检查文本框是否为空

检查文本框是否为空

检查文本框是否为空

如何在从文本框中插入数据之前检查列值是否为空

通过检查每个动态创建的文本框为空来防止表单提交

VBA根据其他文本框是否为空来更改文本框中的值

在没有提交表单或在文本框外部按值后,检查文本框是否为空

检查文本框是否在Javascript中为空

检查以查看文本框是否在php中为空

注册屏幕检查文本框是否为空

使用yii框架提交表单时,文本框的检查值是否为空

如何根据文本框是否为空来禁用或启用按钮?

检查动态创建的文本框的值是否不为空

如何验证一系列文本框中的文本框值是否为空?

如何检查特定div下的特定文本框是否为空

我想通过文本框值传递 Mysql 查询

通过检查是否为空来显示不同的文本

如何检查用户在文本框中输入的值是否为数字双精度?

如何验证文本框以防止传递空值?

我如何检查粘贴在文本框中的值?

检查文本框是否有值

如何使用for循环在c#windows窗体应用程序中检查文本框是否为空,使用数组

如何从Qlistwidget中选择项目,并更新Pyqt5中的文本框?

如何通过文本框(Windows窗体)C#检查我的数据库中是否存在主键

我想检查文本框值是否等于我的特定值

检查某些文本框是否为空,然后在VBA中运行事件

检查文本框是否为空,然后放置属性