加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 从主PyQt窗口启动一个PyQT窗口,并获取用户输入?

发布时间:2020-12-20 11:20:04 所属栏目:Python 来源:网络整理
导读:我有一个主要的PyQt窗口,当我们点击某个按钮时,我需要从中获取一串用户输入. 这是我的用户输入窗口的代码: class InputDialog(QtGui.QDialog): ''' this is for when you need to get some user input text ''' def __init__(self,parent=None,title='user
我有一个主要的PyQt窗口,当我们点击某个按钮时,我需要从中获取一串用户输入.

这是我的用户输入窗口的代码:

class InputDialog(QtGui.QDialog):
   '''
   this is for when you need to get some user input text
   '''
   def __init__(self,parent=None,title='user input',label='comment',text=''):

       QtGui.QWidget.__init__(self,parent)

       #--Layout Stuff---------------------------#
       mainLayout = QtGui.QVBoxLayout()

       layout = QtGui.QHBoxLayout()
       self.label = QtGui.QLabel()
       self.label.setText(label)
       layout.addWidget(self.label)

       self.text = QtGui.QLineEdit(text)
       layout.addWidget(self.text)

       mainLayout.addLayout(layout)

       #--The Button------------------------------#
       layout = QtGui.QHBoxLayout()
       button = QtGui.QPushButton("okay") #string or icon
       self.connect(button,QtCore.SIGNAL("clicked()"),self.close)
       layout.addWidget(button)

       mainLayout.addLayout(layout)
       self.setLayout(mainLayout)

       self.resize(400,60)
       self.setWindowTitle(title)

从主窗口,我说:

inputter = InputDialog(mainWindowUI,title="comments",label="comments",text="")
inputter.show()
comment = inputter.text.text()
print comment

即使用户键入注释并点击“确定”,也会打印一个空字符串.显然因为主窗口脚本不等待InputDialog关闭.那么,我如何让它等待,以便我可以检索用户输入?

解决方法

使用

inputter.exec_()

代替

inputter.show()

来自:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qdialog.html#exec

This method is also a Qt slot with the C++ signature int exec().

Shows the dialog as a modal dialog,blocking until the user closes it.
The function returns a DialogCode result.

If the dialog is application modal,users cannot interact with any
other window in the same application until they close the dialog. If
the dialog is window modal,only interaction with the parent window is
blocked while the dialog is open. By default,the dialog is
application modal.

See also open(),show(),result(),and setWindowModality().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读