pydroid3 中文文档 下载 App

Kivy / PySide6 / Tkinter / Pygame 不弹出窗口 —— GUI 框架未识别

四类原因对号入座

原因 1:Pydroid 没检测到你想用 GUI 框架

Pydroid 自动检测 GUI 框架依赖:

  1. 代码里是否有 import kivy / import PySide6 / import tkinter / import pygame
  2. 或代码开头是否有 #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。这种情况:

快速定位脚本

在编辑器里新建一个最小化测试脚本,逐个测:

测 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 没检测到、或者框架没装。先查这两项,不行再往上挖。