首页 > 解决方案 > 单击 PyQt5 中的 PushButton 时如何读取 QLineEdit 和 QCheckBox 值?

问题描述

我试图使用下面的代码,但在执行时它说“Python 已停止工作”并重新启动 shell。基本上我试图在单击按钮时从 QLineEdit (用户输入)值中读取文本,但它失败了。

class Display(QWidget):    
    def __init__(self):
        super().__init__()
        self.initUI()


    def initUI(self):
        search_dir_label = QLabel('Directory to Search')
        search_dir_te = QLineEdit()
        search_dir_layout = QHBoxLayout(self)
        search_dir_layout.addWidget(search_dir_label)
        search_dir_layout.addWidget(search_dir_te)
        vert_layout1.addLayout(search_dir_layout)

        search_button = QPushButton('Search')
        search_button.clicked.connect(self.sendval)   
        cancel_button = QPushButton('Cancel')
        search_cancel_layout = QHBoxLayout(self)
        search_cancel_layout.addWidget(search_button)
        search_cancel_layout.addWidget(cancel_button)
        search_cancel_layout.setAlignment(Qt.AlignCenter)
        vert_layout1.addLayout(search_cancel_layout)

    def sendval(self):
        print(self.search_dir_te.text)

标签: pythonpyqt5

解决方案


您只需更改search_dir_teself.search_dir_teininitUI()即可在其他功能中访问它。text()另外,添加括号以调用方法sendval()

def initUI(self):
    search_dir_label = QLabel('Directory to Search')
    self.search_dir_te = QLineEdit()
    search_dir_layout = QHBoxLayout(self)
    search_dir_layout.addWidget(search_dir_label)
    search_dir_layout.addWidget(self.search_dir_te)
    vert_layout1.addLayout(search_dir_layout)

    search_button = QPushButton('Search')
    search_button.clicked.connect(self.sendval)   
    cancel_button = QPushButton('Cancel')
    search_cancel_layout = QHBoxLayout(self)
    search_cancel_layout.addWidget(search_button)
    search_cancel_layout.addWidget(cancel_button)
    search_cancel_layout.setAlignment(Qt.AlignCenter)
    vert_layout1.addLayout(search_cancel_layout)

def sendval(self):
    print(self.search_dir_te.text())

推荐阅读