gpt4 book ai didi

python - PyQT5的输入应用程序对话框没有停留在Windows 10屏幕上

转载 作者:行者123 更新时间:2023-12-01 00:36:23 24 4
gpt4 key购买 nike

我正在开发一个 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 上不存在同样的问题。

最佳答案

这部分的问题是 Windows 中的进程处理。对 QT 应用程序进行线程化,并在 while 循环内调用该线程。这应该可以解决问题。

from queue import Queue
que = Queue()


def call_qt(out_que):
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit, QLabel
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()

out_que.put()


while True:
t = Threading.thread(target=call_qt, args=(que,))
t.start()
t.join()
print("text: ",que.get())

关于python - PyQT5的输入应用程序对话框没有停留在Windows 10屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57725505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com