DOC软件文档百宝箱

图形界面与matplotlib画图

pydroid3 里各种「有画面」的程序怎么跑:Tkinter 小窗口、Kivy 与 PySide6 应用、pygame 小游戏、matplotlib 画图,以及中文变方块这个经典问题的解法。相关文档:pip装库与镜像源配置.md · 常见报错与解决办法.md

一、Tkinter:最快出窗口的路

Tkinter 是标准库,pydroid3 完整支持,装都不用装:

import tkinter as tk

root = tk.Tk()
root.title("hello")
tk.Label(root, text="在手机上跑起来的窗口").pack(padx=40, pady=20)
root.mainloop()

保存后直接运行即可。如果 import 了 tkinter 还是按终端模式跑,在文件第一行加 #Pydroid run tkinter 强制指定。

二、Kivy 与 PySide6

两个框架都要先装(装库方法见pip装库与镜像源配置.md):

运行模式也可以用魔法注释强制指定:#Pydroid run kivy、#Pydroid run qt、#Pydroid run sdl2、#Pydroid run pygame。

三、pygame 小游戏

pygame 2 可用,写法与桌面端一致,import pygame 即会按对应模式运行。注意手机屏幕方向、触控输入与桌面键盘的差异,改内置示例比从零写省事。

四、matplotlib 画图

装好 matplotlib 后,普通脚本默认按 GUI 模式运行,图会直接弹出来:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)
plt.show()

两个常撞的点:

五、中文显示成方块怎么办

matplotlib 默认字体不含中文字形,中文标签全变成「豆腐块」。桌面上的惯用解法(设 SimHei)在手机上不管用,因为设备里没有这个字体。可行做法:找一个带中文的 .ttf 字体文件放进公共目录,画图前注册并指定:

import matplotlib.pyplot as plt
from matplotlib import font_manager

font_manager.fontManager.addfont('/sdcard/Documents/Pydroid3/某中文字体.ttf')
plt.rcParams['font.sans-serif'] = ['该字体的名称']
plt.rcParams['axes.unicode_minus'] = False  # 负号正常显示

font.sans-serif 里填字体注册后的名称(不是文件名),可以先 print(font_manager.fontManager.ttflist) 对照。

六、哪些图形库要付费

OpenCV(且要求设备支持 Camera2 API)、TensorFlow、PyTorch 这三个库只对 Premium 用户开放,做机器学习、计算机视觉方向才会碰到;纯画图与常规 GUI 用基础版本就够。环境与版本划分的整体说明见 pydroid3 介绍站,跑不起来时先翻常见报错与解决办法.md。

同站更多