首页 > 解决方案 > 如何为 CLI Python 程序制作 Kivy GUI

问题描述

我不确定如何问这个问题,所以这是最有意义的。我有一个基于控制台的 Python 程序,用于模拟燃料存储和传输系统(示意图)。

当前程序没有什么特别之处,只是使用阀门和泵实例来查看阀门是否打开/关闭、泵是否打开/关闭,以及相关的流量和跨设备的压力。

我正在寻找一个模拟人机界面的 Kivy 程序。在这种情况下,阀门旁边的简单切换按钮可以显示它们是打开还是关闭,以及泵是打开还是关闭。

我已经阅读了 Kivy 教程并阅读了一本 Kivy 书,但它们并没有回答我的问题,因为它们倾向于更多地关注手机游戏而不是面向桌面的应用程序。我已经知道如何将按钮添加到原理图中,但我不知道如何使 .py/.kv 文件与我现有的 Python 代码交互。如果可能的话,我不想重写我现有的代码。

以下是我到目前为止所拥有的;它所做的只是在阀门 1 下方制作一个 ToggleButton。按下时,按钮会将“按下”一词发送到控制台输出。

hmi.py

import kivy
kivy.require("1.10.0")

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.config import Config
from kivy.uix.togglebutton import ToggleButton, ToggleButtonBehavior

Config.set("graphics", "width", "1062")
Config.set("graphics", "height", "849")


class HMI(FloatLayout):
    pass


class HMIApp(App):
    def build(self):
        return HMI()


if __name__ == "__main__":
    HMIApp().run()

hmi.kv

#:kivy 1.10.0

<HMIButton@ToggleButton>:
    color: 1, 1, 1, 1
    size_hint: (.01, .01)

<HMI>:
    canvas.before:
        Rectangle:
            pos: self.pos
            size: self.size
            source: "fuel_schematic.png"
    HMIButton:
        id: _valve_1
        text: "1"
        pos: 360, 285
        on_press: print("pressed")

我的主要问题是,将 VirtualPLC.Models.FuelFarm.components.gate1 中的阀门实例和 VirtualPLC.Models.FuelFarm.functionality.gate1_open() [和 close()] 中的功能绑定到的最佳方法是什么我添加到 Kivy 代码中的切换按钮?

我可以简单地导入这些模块还是必须将它们重写到 Kivy 程序中?

标签: pythonkivy

解决方案



推荐阅读