输入字段是可编辑的,当使用 Python3 从终端运行源代码时,我可以使用键盘上的键和 inc/dec 值插入一个值。
但是,当我使用 PyInstaller 成功编译它时,它表现得很奇怪:
输入字段根本不会接管您在那里填写的任何内容。 然而,控制台接管了键输入。 当我想使用箭头来增加或减少值时,它们根本没有反应或 react 不稳定。 将光标指向向下箭头以减少,不会为 ex 做任何事情。 将光标指向上箭头以增加,使其点击向下箭头。
此处显示示例:https://youtu.be/Wyx3FOlWNuA
当我通过更改 main.py 中的最后一行来代替使用 CEF 时:
webview.start()
到
webview.start(gui='cef')
...箭头行为正确。 但是按键输入,还是不行。
尝试在 macOS El Capitan + Catalina 上使用 Python 3.8.5 和 Python 3.6.8/PyInstaller 4.1
在 Windows + Linux 上,一切正常。
这是一些 macOS 限制/错误吗?
我知道:https://github.com/r0x0r/pywebview/issues/66 但我没有使用虚拟环境。
我还知道:Python webview GUI: hover effects and key input not working (using pywebview) 但由于没有人回答,我的评论被删除了,问他现在是否解决了问题,特此开一个新线程。
代码index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Example</title>
</head>
<body>
<input>
<input type='number'>
</body>
</html>
代码main.py:
import webview
if __name__ == '__main__':
webview.create_window('Example', 'index.html')
webview.start()
代码main.spec:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['main.py'],
pathex=[],
binaries=[],
datas=[('index.html', '.')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True)
还尝试使用 https://pyinstaller.readthedocs.io/en/stable/spec-files.html#spec-file-options-for-a-mac-os-x-bundle 编译为 .app ,同样的结果。 还尝试使用 --noconsole 进行编译,结果相同。
最佳答案
唯一对我有用的是禁用控制台设置,EXE()
命令中的 console=False
。我相信 CLI 参数,比如 --noconsole
,对你不起作用,因为它们被 .spec 文件覆盖了。不确定目前在 OS X 中是否完全可以使用某些控制台 + 窗口输出组合 - 我们计划部署一个单独的脚本来启动终端并运行类似 ./app
的东西。
关于python - 在 macOS 上编译时输入字段不可编辑 + 不稳定的箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64943328/