通过单击一个按钮,在选中复选框时打印在 QLineEdit 中输入的一些文本 PyQt4

By clicking a button, print some texts entered in QLineEdit when a checkbox is checked PyQt4

通过单击一个按钮,我想在选中复选框时打印在 QLineEdit 中输入的一些文本。我的示例代码如下:

import sys
import PyQt4
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class Widget(QWidget):
    def __init__(self, parent= None):
        super(Widget, self).__init__(parent)
        layout = QGridLayout()

        self.setLayout(layout)

        self.checkBox = QCheckBox()
        layout.addWidget(self.checkBox, 0, 0)


        self.le = QLineEdit()
        layout.addWidget(self.le, 0, 1)

        self.btn = QPushButton('Run')
        layout.addWidget(self.btn, 0, 3)


class Func ():
    def __init__(self):
        a = Widget(self)

    def someFunc(self):
        ##print ()


app = QApplication(sys.argv)
widget = Widget()
widget.show()
app.exec_()

正如您在上面看到的,我希望 "Widget" class 中的按钮连接到 "Func" class 中的 "someFunc" 方法。因此,当在 "self.le" 中输入一些文本并选中 "checkBox" 时,我希望 "someFunc" 通过单击按钮打印在 "self.le" 中输入的文本。如果未选中 "checkbox",即使输入了某些文本,单击该按钮也不会导致任何事情发生。

如果谁知道怎么解决,请告诉我谢谢!!

您需要将按钮的点击信号连接到处理它的函数。像这样:button.clicked.connect(handler_function)

import sys
import PyQt5
from PyQt5.QtWidgets import *

class Func ():
    def __init__(self, widget):
        self.w = widget

    def someFunc(self):
        if self.w.checkBox.isChecked():
            print(self.w.le.text())

class Widget(QWidget):
    def __init__(self, parent= None):
        super(Widget, self).__init__(parent)
        layout = QGridLayout()

        self.setLayout(layout)

        self.checkBox = QCheckBox()
        layout.addWidget(self.checkBox, 0, 0)


        self.le = QLineEdit()
        layout.addWidget(self.le, 0, 1)

        self.btn = QPushButton('Run')
        layout.addWidget(self.btn, 0, 3)

        # connecting to a method in this class
        # self.btn.clicked.connect(self.some_func)

        #connecting to a method in another class
        self.handler_class = Func(self)
        self.btn.clicked.connect(self.handler_class.someFunc)

    def some_func(self):
        if self.checkBox.isChecked():
            print(self.le.text())


app = QApplication(sys.argv)
widget = Widget()
widget.show()
app.exec_()

编辑: 简单地说:在 Func class self.w 中包含对小部件的引用,单击按钮时将从中发出信号。

为什么我要保留对该小部件的引用?这样我就可以访问小部件的 comboboxlineedit。没有办法访问它们,我看不到 checkbox 是否被选中或用户在 textedit.

中输入了什么