在 Windows 中使用 Kivy 代码,但在 linux 环境中显示空白
Working Kivy codes in Windows but blank screen on linux environment
我正在尝试进行一些跨平台测试。这是 Windows:
的工作代码
main.py
#!/usr/bin/kivy
import kivy
kivy.require('1.0.6')
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
class MatrixCalcLayout(BoxLayout):
pass
class ConfusionMatrixCalc_v3App(App):
def build(self):
return MatrixCalcLayout()
if __name__=='__main__':
ConfusionMatrixCalc_v3App().run()
ConfusionMatrixCalc_v3.kv
#:kivy 1.0
#:import kivy kivy
<MatrixCalcLayout>:
orientation: 'vertical'
BoxLayout:
Button:
BoxLayout:
Button:
BoxLayout:
Button:
当我在 Ubuntu 上尝试 运行 它时,它确实会加载并显示 kivy canvas,但它只是一个空白(黑色)屏幕,好像它没有t link 到 .kv 文件。
已编辑:更正了 .kv 文件名
您需要使用 Builder 加载 kv 文件:
Builder.load_file("ConfusionMatrixCalc.kv")
或者将您的应用 class 名称从 ConfusionMatrixCalc_v3App
更改为 ConfusionMatrixCalcApp
根据 kivy docs:
Kivy looks for a Kv file with the same name as your App class in lowercase, minus “App” if it ends with ‘App’ e.g:
您可以将 .kv 文件更改为 confusionmatrixcalc_v3.kv
或在调用 run()
时明确提供
if __name__=='__main__':
ConfusionMatrixCalc_v3App(kv_file="ConfusionMatrixCalc.kv").run()
我正在尝试进行一些跨平台测试。这是 Windows:
的工作代码main.py
#!/usr/bin/kivy
import kivy
kivy.require('1.0.6')
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
class MatrixCalcLayout(BoxLayout):
pass
class ConfusionMatrixCalc_v3App(App):
def build(self):
return MatrixCalcLayout()
if __name__=='__main__':
ConfusionMatrixCalc_v3App().run()
ConfusionMatrixCalc_v3.kv
#:kivy 1.0
#:import kivy kivy
<MatrixCalcLayout>:
orientation: 'vertical'
BoxLayout:
Button:
BoxLayout:
Button:
BoxLayout:
Button:
当我在 Ubuntu 上尝试 运行 它时,它确实会加载并显示 kivy canvas,但它只是一个空白(黑色)屏幕,好像它没有t link 到 .kv 文件。
已编辑:更正了 .kv 文件名
您需要使用 Builder 加载 kv 文件:
Builder.load_file("ConfusionMatrixCalc.kv")
或者将您的应用 class 名称从 ConfusionMatrixCalc_v3App
更改为 ConfusionMatrixCalcApp
根据 kivy docs:
Kivy looks for a Kv file with the same name as your App class in lowercase, minus “App” if it ends with ‘App’ e.g:
您可以将 .kv 文件更改为 confusionmatrixcalc_v3.kv
或在调用 run()
if __name__=='__main__':
ConfusionMatrixCalc_v3App(kv_file="ConfusionMatrixCalc.kv").run()