通过单击一个按钮,在选中复选框时打印在 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
中包含对小部件的引用,单击按钮时将从中发出信号。
为什么我要保留对该小部件的引用?这样我就可以访问小部件的 combobox
和 lineedit
。没有办法访问它们,我看不到 checkbox
是否被选中或用户在 textedit
.
中输入了什么
通过单击一个按钮,我想在选中复选框时打印在 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
中包含对小部件的引用,单击按钮时将从中发出信号。
为什么我要保留对该小部件的引用?这样我就可以访问小部件的 combobox
和 lineedit
。没有办法访问它们,我看不到 checkbox
是否被选中或用户在 textedit
.