Python 为什么我的QLineEdit.text()返回空字符串
首先,我已经读过一些关于同一主题的问题,但与我的情况无关。下面是我的一些代码片段:Python 为什么我的QLineEdit.text()返回空字符串,python,pyqt5,Python,Pyqt5,首先,我已经读过一些关于同一主题的问题,但与我的情况无关。下面是我的一些代码片段: class MyClass(QMainWindow): def __init__(self): super().__init__() self.wid_dict = {"wid1": (0, 1), "wid2": (1,1)} self.create() def create(self): for wid_name, va
class MyClass(QMainWindow):
def __init__(self):
super().__init__()
self.wid_dict = {"wid1": (0, 1), "wid2": (1,1)}
self.create()
def create(self):
for wid_name, value in self.wid_dict.items():
widget = QLineEdit()
widget.FinishedEditting.connect(partial(self.slots, widget.text()))
def slots(self, text):
print(text)
当我在小部件中写入输入并切换到下一个小部件时,结果只会打印一个空字符串。我做错了吗
另外,当我在手机上打字时,我已经删除了一大块代码如果你认为你的出版物不是你能做的最好的,那么你最好花更多的时间,例如,你提供的代码不是最好的,因为有很多错误
问题是,您在创建QLineEdit后不久就得到了文本,而它显然是一个空文本,一个可能的解决方案是传递小部件
从functools导入部分
导入系统
从PyQt5.QtWidgets导入QApplication、QLineEdit、QMainWindow、QVBoxLayout、QWidget
类MyClass(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.wid_dict={“wid1”:(0,1),“wid2”:(1,1)}
self.create()
def创建(自我):
central_widget=QWidget()
self.setCentralWidget(中心窗口小部件)
lay=QVBoxLayout(中心窗口小部件)
对于wid_名称,self.wid_dict.items()中的值:
widget=QLineEdit()
widget.editingFinished.connect(部分(self.slots,widget))
lay.addWidget(小部件)
def插槽(自我,小部件):
打印(widget.text())
如果名称=“\uuuuu main\uuuuuuuu”:
app=QApplication(sys.argv)
w=MyClass()
w、 show()
sys.exit(app.exec_())
另一种类似的方法是在插槽中使用sender(),该方法返回发出信号的QObject:
导入系统
从PyQt5.QtWidgets导入QApplication、QLineEdit、QMainWindow、QVBoxLayout、QWidget
类MyClass(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.wid_dict={“wid1”:(0,1),“wid2”:(1,1)}
self.create()
def创建(自我):
central_widget=QWidget()
self.setCentralWidget(中心窗口小部件)
lay=QVBoxLayout(中心窗口小部件)
对于wid_名称,self.wid_dict.items()中的值:
widget=QLineEdit()
widget.editingFinished.connect(self.slots)
lay.addWidget(小部件)
def插槽(自):
widget=self.sender()
打印(widget.text())
如果名称=“\uuuuu main\uuuuuuuu”:
app=QApplication(sys.argv)
w=MyClass()
w、 show()
sys.exit(app.exec_())
<>代码> 如果你认为你的出版物不是你能做的最好的,那么你最好花更多的时间,例如,你提供的代码不是最好的,因为有很多错误
问题是,您在创建QLineEdit后不久就得到了文本,而它显然是一个空文本,一个可能的解决方案是传递小部件
从functools导入部分
导入系统
从PyQt5.QtWidgets导入QApplication、QLineEdit、QMainWindow、QVBoxLayout、QWidget
类MyClass(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.wid_dict={“wid1”:(0,1),“wid2”:(1,1)}
self.create()
def创建(自我):
central_widget=QWidget()
self.setCentralWidget(中心窗口小部件)
lay=QVBoxLayout(中心窗口小部件)
对于wid_名称,self.wid_dict.items()中的值:
widget=QLineEdit()
widget.editingFinished.connect(部分(self.slots,widget))
lay.addWidget(小部件)
def插槽(自我,小部件):
打印(widget.text())
如果名称=“\uuuuu main\uuuuuuuu”:
app=QApplication(sys.argv)
w=MyClass()
w、 show()
sys.exit(app.exec_())
另一种类似的方法是在插槽中使用sender(),该方法返回发出信号的QObject:
导入系统
从PyQt5.QtWidgets导入QApplication、QLineEdit、QMainWindow、QVBoxLayout、QWidget
类MyClass(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.wid_dict={“wid1”:(0,1),“wid2”:(1,1)}
self.create()
def创建(自我):
central_widget=QWidget()
self.setCentralWidget(中心窗口小部件)
lay=QVBoxLayout(中心窗口小部件)
对于wid_名称,self.wid_dict.items()中的值:
widget=QLineEdit()
widget.editingFinished.connect(self.slots)
lay.addWidget(小部件)
def插槽(自):
widget=self.sender()
打印(widget.text())
如果名称=“\uuuuu main\uuuuuuuu”:
app=QApplication(sys.argv)
w=MyClass()
w、 show()
sys.exit(app.exec_())
widget=QLineEdit(self);widget.editingFinished.connect(self.slots)。。。def插槽(self):打印(self.sender().text())
widget=QLineEdit(self);widget.editingFinished.connect(self.slots)。。。def插槽(self):打印(self.sender().text())
。