繁体   English   中英

Pyside:如何使用QInputDialog.getText

[英]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()

startendnumber变量没有全局范围。 它们在类范围内声明和打印,创建类时仅发生一次

但是无论如何,使用全局变量通常是一个坏主意。 如果要使变量可用于其他方法,请改用实例属性:

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.

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