python - 如何为 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 程序中?
解决方案
推荐阅读
- javascript - 根据用户选择的下拉菜单选项显示 div
- struct - uncrustify:如何更改结构初始化大括号
- css - 尝试使用 table 来实现 CSS 响应但不起作用
- python - python - 如何将从单个分类变量创建的多个虚拟变量列合并到python中的单个列中?
- jquery - Chrome 表单重置不更改显示选择元素
- perl - 在 Perl 中将包含空格的参数从一个脚本传递到另一个脚本
- arrays - 我们如何在postgresql中提取json数组元素
- ruby-on-rails - 控制器中的 Rails 渲染#create 未加载页面
- c# - 如果在.Net Web Api 2中使用OwinContext中间件出现错误请求,如何检索实际错误消息?
- image - 如何在 Docker 的 ubuntu 中安装 JLink?