[英]Pyside: How to use QInputDialog.getText
我是PySide的新手,我试图让用户输入一些文本。 然后,我想将其存储在变量中,并通过我拥有的单独脚本在搜索中使用它。 我已经通过文本文件解析了搜索脚本,以查找用户将输入的关键字。 首先,我试图将输入文本存储在变量中,并且正在测试是否使用简单的print语句存储了输入文本。
正如您将在下面看到的那样,我已经对其进行了设置,以便弹出一个输入框,并且用户输入一些文本。 但是,如果我在showDialog
之外调用打印,则不会打印任何内容。 如果我在showDialog
打印,效果很好。 为什么不在功能外打印?
如果有更好的方法可以做到,请随时教育我。
import sys
from PySide import QtGui
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.btn = QtGui.QPushButton('test', self)
self.btn.move(20, 20)
self.btn.clicked.connect(self.showDialog)
self.setGeometry(300, 300, 290, 150)
self.setWindowTitle('Input dialog')
self.show()
start = ''
end = ''
number = ''
def showDialog(self):
global start
start = start, ok = QtGui.QInputDialog.getText(self, 'text',
'Enter some text')
global end
end = end, ok = QtGui.QInputDialog.getText(self, "text",
"Enter some text")
global number
number = number, ok = QtGui.QInputDialog.getText(self, "text",
"Enter some text")
# I'm trying to print out the text stored from the input variables.
print start
print end
print number
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
start
, end
和number
变量没有全局范围。 它们在类范围内声明和打印,创建类时仅发生一次 。
但是无论如何,使用全局变量通常是一个坏主意。 如果要使变量可用于其他方法,请改用实例属性:
def showDialog(self):
self.start, ok = QtGui.QInputDialog.getText(self, 'text', 'Enter some text')
self.end, ok = QtGui.QInputDialog.getText(self, "text", "Enter some text")
self.number, ok = QtGui.QInputDialog.getText(self, "text", "Enter some text")
print self.start
print self.end
print self.number
编辑 :
下面是一个简单的演示,展示了如何构建程序。 假设您可以导入搜索模块并运行其功能之一以获取搜索结果。
import sys
from PySide import QtCore, QtGui
# import mysearch
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.resultsBox = QtGui.QTextEdit()
self.resultsBox.setReadOnly(True)
self.startBox = QtGui.QLineEdit()
self.startBox.setPlaceholderText('Enter Start')
self.endBox = QtGui.QLineEdit()
self.endBox.setPlaceholderText('Enter End')
self.numberBox = QtGui.QLineEdit()
self.numberBox.setPlaceholderText('Enter Number')
self.searchButton = QtGui.QPushButton('Search')
self.searchButton.clicked.connect(self.runSearch)
layout = QtGui.QGridLayout(self)
layout.addWidget(self.resultsBox, 0, 0, 1, 4)
layout.addWidget(self.startBox, 1, 0)
layout.addWidget(self.endBox, 1, 1)
layout.addWidget(self.numberBox, 1, 2)
layout.addWidget(self.searchButton, 1, 3)
def runSearch(self):
start = self.startBox.text()
end = self.endBox.text()
number = self.numberBox.text()
if start and end and number:
self.resultsBox.clear()
self.resultsBox.append('Start: %s' % start)
self.resultsBox.append('End: %s' % end)
self.resultsBox.append('Number: %s\n' % number)
# run search script ...
# results = mysearch.run(start, end, number)
results = 'Hello World'
self.resultsBox.append(results)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
example = Example()
example.show()
sys.exit(app.exec_())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.