Kivy/Python 在 rpi 触摸屏上显示白屏的代码

Kivy/Python code displaying white screen on rpi touchscreen

我写的一些代码似乎在桌面上运行时遇到了一些问题,但是当复制到我的树莓派 pi/touchscreen 时,我得到一个纯空白的屏幕。 Rpi 已经安装了 kivy。 Kivy 演示在两个系统上都运行良好。 kivy 上有没有可能有 import Window 的东西?任何建议将不胜感激!

编辑 1:我在网上看到其他人有类似的问题,需要添加(来自 kivy.lang.builder import Builder)和(Builder.load_file.py)。我在 python 代码中添加了这个,这让我看到了原始程序的 most。一些 Kivy 正在显示,尽管出于某种原因 - 图形 menu.png 丢失了,页面底部的 textbox/grid 布局也丢失了(下面的 kivy 代码的底部)。这可能是我的定位问题,所以我会研究一下。

编辑 2:这应该已解决 - 它正在为 python 代码实现 Builder(正确版本如下所示)。我还发现- raspberry pi 可能与名为 'menu.png' 的图像有问题...只需更改图像的名称,一切都可见。不知道那个。感谢您的协助。

Python代码:

from time import sleep

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
from kivy.core.window import Window
from kivy.graphics import Color, Rectangle
from kivy.lang.builder import Builder

Builder.load_file('my.kv')


class MyFloatLayout(Widget):

    def formula(self, num):
        print (num)
        self.ids.formula_input.text = ''
        self.ids.formula_input.text = f'{num}'       

    def press(self):
        loaded = self.ids.formula_input.text
        loadnum = int(loaded)

        if loaded == "":
            print(f'Please enter a formula to continue!')
            self.ids.disp_stat.text = f'Please enter a formula'
            
        else:
            print(f'Dispensing Formula {loaded}!')
            self.ids.disp_stat.text = f'Dispensing Formula #{loaded}!'
            self.ids.formula_input.text = ''         
        
class MyApp(App):

    def build(self):
        Window.clearcolor = (1,1,1,1)
        return MyFloatLayout()
 
if __name__ == '__main__':
    MyApp().run()

Kivy 代码:

(sideways carrot)MyFloatLayout(sideways carrot)

disp_stat:disp_stat
formula_input:formula_input

FloatLayout:
    size: root.width, root.height

    Label:
        text: "Welcome To Sharp!"
        color: (0,0,0,1)
        font_size: 40
        size_hint: (0.5,0.2)
        pos_hint: {"x":0.2, "top":1}

    Image:
        padding:200
        source: 'mylogo.png'
        size_hint: (0.5,0.25)
        pos_hint: {"x":.6, "top":1}
        allow_stretch: True
        keep_ratio: True
        
    Image:
        padding:200
        source: 'funimg.png'
        size_hint: (.5, .5)
        pos_hint: {"x":0, "top":.75}
        allow_stretch: True
        keep_ratio: True
        
    GridLayout:
        cols:1
        size_hint: (.4,.5)
        pos_hint: {"x":0.55, "top":.8}

        Label:
            text: "Select Your Formula:"
            font_size: 24
            color: (0,0,0,1)
            
        GridLayout:
            cols:2
            size_hint: (1,1)

            Button:
                text: "Relax"
                on_press: root.formula(1)

            Button:
                text: "Shemax"
                on_press: root.formula(2)

            Button:
                text: "Memax"
                on_press: root.formula(3)

            Button:
                text: "Bebax"
                on_press: root.formula(4)
                          
        Button:
            text: "Initialize Dispense!"
            font_size: 24       
            size_hint: (.2,.3)
            on_press: root.press()

    GridLayout:
        cols:2
        size_hint: (0.4,0.07)
        pos_hint: {"x":.05, "y":.06}

        Label:
            id:disp_stat
            text: "Formula to dispense:"
            color: (0,0,0,1)
            font_size: 12

        TextInput:
            id:formula_input
            text: ""
            font_size:12
            size_hint: (0.5,0.07)

有同样的问题。通过在 Raspberry Pi.

上增加专用于 GPU 的内存来解决它

编辑您的 /boot/config.txt 文件(需要 sudo

向下滚动到 [all] 部分,然后按如下方式编辑 gpu_mem 行:

gpu_mem=256

然后重启你的 pi。