繁体   English   中英

通过单击按钮,选中复选框时,打印在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”类中的按钮连接到“ Func”类中的“ someFunc”方法。 因此,当在“ self.le”中输入了一些文本以及选中了“ checkBox”时,我希望“ someFunc”通过单击按钮来打印在“ self.le”中输入的文本。 如果未选中“复选框”,则即使输入了一些文本,单击按钮也不会导致任何事情发生。

如果有人知道如何解决,请让我知道谢谢!!

您需要将按钮的单击信号连接到将要处理的功能。 像这样: 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类中, self.w包含对小部件的引用,单击该按钮时将从该小部件发出信号。

为什么我要引用该小部件? 这样我就可以访问小部件的comboboxlineedit 如果没有访问它们的方法,我将看不到checkbox是否被选中,或者用户在textedit键入了什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM