python - PyQT5 的输入应用程序对话框没有停留在 windows 10 屏幕上
问题描述
我正在开发一个 PyQt5 应用程序,它以字符串格式从用户那里获取输入,然后在代码中进一步利用该变量。
问题:在 while 循环中调用输入框代码(理想情况下,该框应该停留并等待用户的输入,从而也保持 while 循环执行),而不是它不会停留在屏幕上,而是闪烁并在 windows 10 上执行脚本时会在几分之一秒内消失。但是当我单独执行下面提到的代码片段时,就不会出现此类问题。
代码片段
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit, QLabel
def call_qt():
app = QApplication(sys.argv)
gui = QWidget()
text, ok = QInputDialog.getText(gui, "User Input",
"""Do you wish to Continue [Y/N]?""")
#print(text, ok)
if ok:
app.exit()
else:
app.exit()
return text
print(call_qt())
我无法弄清楚,这个代码片段可能有什么问题。你能帮我解决这个问题吗?另外,我是 PyQt5 的新手。
困惑:Ubuntu 18 上不存在同样的问题。
解决方案
同样的问题应该发生在 ubuntu 上。当您点击 OK 时,应用程序会自行终止,您将无法看到输出。试试这个代码,它会在小部件上打印结果
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QInputDialog, QVBoxLayout, QLabel)
def call_qt(main_widow):
text, ok = QInputDialog.getText(main_widow, "User Input", "Do you wish to Continue [Y/N]?")
return text, ok
if __name__ == '__main__':
app = QApplication(sys.argv)
main_widow = QWidget()
layout = QVBoxLayout()
label = QLabel()
layout.addWidget(label)
main_widow.setLayout(layout)
main_widow.show()
text, ok = call_qt(main_widow)
# if ok:
# sys.exit()
label.setText(text)
sys.exit(app.exec_())
推荐阅读
- javascript - 如何在木瓜中管理缩放和长度手柄
- javascript - 如何将 PDF 上传到已经嵌入 iframe 的服务器?
- java - 是否有可能在咖啡因中获得一组候选驱逐键?
- c# - 多对多关系的软删除
- mysql - 如何在mysql中检查pdf是否存在或相同的80%?
- javascript - D3 中未显示轴
- elasticsearch - 使用 Jaro-Winkler & Levenstein 算法的 ElasticSearch
- python - 如何在一个函数中替换数据后连接两个熊猫数据框
- javascript - Array.prototype.fill 在 Array.prototype.map 中的异常行为
- sockets - 使用未绑定或绑定但不监听的套接字