我用简单的QLineEdit和QbuttonBox(分别是lineEdit和buttonBox)创建了一个对话框,现在我正在尝试按下OK时使用行编辑中的内容。它只是空白而且在去的过程中不打印并且打印底部打印“无”(基本)。冲浪,发现文字()但仍然没有爱。任何帮助表示赞赏。
from PyQt4 import QtGui, QtCore
import sys
import x
class Dialog(QtGui.QDialog, x.Ui_Dialog):
def __init__(self):
super(Dialog, self).__init__()
self.setupUi(self)
global base
base = self.buttonBox.accepted.connect(self.go)
def go(self):
what = self.lineEdit.text()
return what
print(what)
app = QtGui.QApplication(sys.argv)
form = Dialog()
form.show()
app.exec_()
print(base)
答案 0 :(得分:2)
示例代码大多是正确的,除了go()
方法在有机会打印任何内容之前返回。因此,如果删除该行,它应该按预期工作,即:
class Dialog(QtGui.QDialog, x.Ui_Dialog):
def __init__(self):
super(Dialog, self).__init__()
self.setupUi(self)
self.buttonBox.accepted.connect(self.go)
def go(self):
what = self.lineEdit.text()
print(what)
此外,将信号连接到处理程序时,抓取返回值没有意义。如果连接无效,则只会引发错误。
修改强>:
如果要从对话框外部访问行编辑的文本,那么您实际上并不需要信号。只需确保对话框阻塞,直到用户输入文本,然后直接访问行编辑:
dialog = Dialog()
if dialog.exec_() == QtGui.QDialog.Accepted:
text = dialog.lineEdit.text()
# do stuff with text...
else:
print('cancelled')