Kivy / PySide6 / Tkinter / Pygame 不弹出窗口 —— GUI 框架未识别
四类原因对号入座
原因 1:Pydroid 没检测到你想用 GUI 框架
Pydroid 自动检测 GUI 框架依赖:
- 代码里是否有
import kivy/import PySide6/import tkinter/import pygame - 或代码开头是否有
#Pydroid run kivy/#Pydroid run qt/#Pydroid run terminal注释指令
如果你的代码动态 import(比如用 __import__ 或者变量里存了包名字符串再 import),Pydroid 静态扫描发现不了。
解决:在代码开头加一个显式注释指令:
#Pydroid run kivy
原因 2:GUI 框架根本没装
在 Pip 面板里搜索目标框架(Kivy / PySide6 / tkinter / pygame),确认显示「已安装」状态。如果没装,先装再跑。
PySide6 和 scikit-learn / PyTorch 等是 Premium 专属 wheel——免费版用户装不上 PySide6,这是正常的。
原因 3:强制终端模式冲突
如果你在代码开头加了 #Pydroid run terminal,会强制以纯终端模式运行——任何 GUI 框架的窗口都不会弹出。把这个注释删掉(或改为正确的 #Pydroid run kivy 等)即可。
原因 4:GUI 框架能运行但崩溃了
有时候 Pydroid 识别对了,窗口也弹出了,但瞬间就崩了——输出面板显示 traceback。这种情况:
- Matplotlib + Kivy:确认 Matplotlib Kivy backend 装了(Pip 面板的 Quick Install 区有一键配置)
- PySide6:某些 Android 机型对 Qt backend 支持不完整,尝试换 Kivy
- Kivy + Matplotlib:把
plt.show()放到 Kivy App 的build()方法之后,不要在 App 还没启动时就调用
快速定位脚本
在编辑器里新建一个最小化测试脚本,逐个测:
测 Kivy
import kivy
from kivy.app import App
from kivy.uix.label import Label
class TestApp(App):
def build(self):
return Label(text="Kivy OK")
TestApp().run()
Run 之后手机屏幕上应该弹出一个有「Kivy OK」文字的窗口。
测 Tkinter
import tkinter as tk
root = tk.Tk()
root.title("Tkinter Test")
tk.Label(root, text="Tkinter OK").pack()
tk.Button(root, text="Close", command=root.destroy).pack()
root.mainloop()
测 Matplotlib
import matplotlib.pyplot as plt
plt.plot([1,2,3], [1,4,9])
plt.savefig("Documents/Pydroid3/test-chart.png")
print("Saved!")
先跑 savefig 版本确认 Matplotlib 正常工作,再试 Kivy backend 的 plt.show() 版本。
总结
GUI 不弹出窗口 90% 的情况是原因 1 或原因 2——Pydroid 没检测到、或者框架没装。先查这两项,不行再往上挖。