首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从不同的文件中向活动图添加点

从不同的文件中向活动图添加点
EN

Stack Overflow用户
提问于 2021-11-30 11:36:49
回答 1查看 40关注 0票数 0

我正试着在我的代码中找到一个活图。

当所有东西都在同一个python文件中时,我可以让一个活图工作,尽管当我试图将图形类分离到它自己的python文件时,图形不会更新。我没有真正说明为什么图形没有更新,但我想我可能创建了一组LogGraph对象,而不是在my.kv中的实际LogGraph中添加点,但我不知道如何不这样做。

我的实际代码有点复杂和混乱,因此我在这里模拟了一个应该完全相同的示例代码:

main.py

代码语言:javascript
运行
AI代码解释
复制
from math import sin
import kivy
from kivy_garden.graph import Graph, MeshLinePlot
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.uix.boxlayout import BoxLayout
from kivy.clock import Clock
from data import startdata

class MainWindow(Screen):

    def pressrun(self):
        self.ids.runlbl.text = 'Started'
        startdata()

    pass

class MyApp(App):
    def build(self):
        wm.add_widget(MainWindow())
        return wm

class WindowManager(ScreenManager):
    def __init__(self, **kwargs):
        super(WindowManager, self).__init__(**kwargs)

wm = WindowManager()
kv = Builder.load_file("my.kv")

MyApp().run()

my.kv

代码语言:javascript
运行
AI代码解释
复制
#: import LogGraph graphs.LogGraph
<MainWindow>:
    id: main
    BoxLayout:
        orientation: "vertical"
        LogGraph:
        BoxLayout:
            orientation: "horizontal"
            Button:
                text: "Start Data Gen"
                on_release:
                    root.pressrun()
            Label:
                id: runlbl
                text: "Not Started"

graphs.py

代码语言:javascript
运行
AI代码解释
复制
from kivy_garden.graph import Graph, MeshLinePlot

class LogGraph(Graph):
    def __init__(self, **kwargs):
        super(LogGraph, self).__init__(**kwargs)
        self.xlabel = 'X'
        self.ylabel = 'Y'
        self.x_ticks_major = 25
        self.x_ticks_minor = 5
        self.x_grid_label = True
        self.y_ticks_major = 1
        self.y_grid_label = True
        self.xmin = 0
        self.xmax = 100
        self.ymin = 0.1
        self.ymax = 10
        self.ylog = True
        self.x_grid = True
        self.y_grid = True
        self.plot = MeshLinePlot(color=[1, 0, 0, 1])
        self.add_plot(self.plot)
        self.plot.points = [(1,1)]

    def update_xaxis(self,xmin = 0):
        self.xmin = xmin
        self.xmax = xmin + 10

    def update_yaxis(self,ymin = 0):
        self.ymin = ymin
        self.ymax = ymin + 10

    def update_points(self, point, *args):
        self.plot.points.append([point,point])
        # x axis resize
        if point > self.xmax:
            self.update_xaxis(self.xmax)
        # y axis resize
        if point > self.ymax:
            self.update_yaxis(self.ymax)

data.py

代码语言:javascript
运行
AI代码解释
复制
from kivy.clock import Clock
from functools import partial
from graphs import LogGraph

class DataStore():
    def __init__(self):
        self.i = 1
        self.dataarray = []

    def start(self):
        self.clock = Clock.schedule_interval(self.getData, 1/60)

    def cancel(self):
        self.clock.cancel()

    def wait(self):
        print('Waited!')

    def getData(self):
        i = self.i + 1/60
        LogGraph.update_points(LogGraph(), i)
        pass

def startdata():
    ds = DataStore()
    ds.start()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-30 17:19:41

代码有三个主要问题:

  1. 您的代码kv = Builder.load_file("my.kv")正在第二次加载my.kv文件。它将被自动加载,因为文件的命名是正确的。您应该删除该代码。
  2. 您计划对DataStore.getData()的调用将无法工作,因为您的DataStore实例没有保存在任何地方,因此它会被垃圾收集。
  3. getData()方法DataStore在每次运行时都会创建LogGraph的一个新实例,但不使用GUI中的LogGraph的实例。H 214G 215

要解决这些问题,首先添加到您的kv以允许访问:

代码语言:javascript
运行
AI代码解释
复制
#: import LogGraph graphs.LogGraph
<MainWindow>:
    id: main
    name: 'main'  # added to enable access
    BoxLayout:
        orientation: "vertical"
        LogGraph:
            id: graph  # added to enable access
        BoxLayout:
            orientation: "horizontal"
            Button:
                text: "Start Data Gen"
                on_release:
                    root.pressrun()
            Label:
                id: runlbl
                text: "Not Started"

然后在startdata()方法中添加一个返回

代码语言:javascript
运行
AI代码解释
复制
def startdata():
    ds = DataStore()
    ds.start()

    # return the DataStore instance so it can be saved
    return ds

然后将返回的DataStore保存在pressrun()方法中:

代码语言:javascript
运行
AI代码解释
复制
def pressrun(self):
    self.ids.runlbl.text = 'Started'
    self.dataStore = startdata()

必须修改getData()方法以访问GUI中的LogGraph

代码语言:javascript
运行
AI代码解释
复制
def getData(self, dt):  # time interval argument is required
    self.i += dt

    # access the LogGraph instance in the GUI
    lg = App.get_running_app().root.get_screen('main').ids.graph
    lg.update_points(self.i)
    # LogGraph.update_points(LogGraph(), i)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70175083

复制
相关文章
用户登录界面[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166531.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/20
3.4K0
用户登录界面[通俗易懂]
CSS——用户界面
用户界面(User Interface)属性是一些与用户界面特性相关的CSS属性。
Html5知典
2019/11/26
7390
好的用户界面-界面设计的一些技巧
如此有用的文章我已记不得是什么时候发现的了,但在看完的那一刻便想将之翻译,分享给大家自己也受用。
lyb-geek
2019/08/12
7810
好的用户界面-界面设计的一些技巧
图形用户界面入门
EasyGUI 是 Python 中一个非常简单的 GUI 编程模块,不同于其他的 GUI 生成器,它不是事件驱动的。相反,所有的 GUI 交互都是通过简地函数调用就可以实现。
清菡
2020/12/02
9500
图形用户界面入门
[javaSE] GUI(图形用户界面)
调用Frame对象的setSize()方法,设置尺寸,参数:int的宽度,int的高度
唯一Chat
2019/09/10
9120
[javaSE] GUI(图形用户界面)
模拟用户登录界面
上网过程中,我们常常会有一个账号的登录过程,本篇博客通过模拟用户登录界面以及登录过程过多时,引发的账号锁定现象。形象地变现出用户登录的详细过程。
算法与编程之美
2021/12/21
3.4K0
用户界面开发基础
Activity是Android中最核心的应用程序组件,也是大多数程序必须使用的用于显示界面的组件。
小小工匠
2021/08/16
1.8K0
CSS用户界面样式
所谓的界面样式, 就是更改一些用户操作样式, 比如 更改用户的鼠标样式, 表单轮廓以及 防止表单域拖拽等。但是比如滚动条的样式改动受到了很多浏览器的抵制,因此我们就放弃了。
星辰_大海
2020/09/30
1.9K0
后台管理系统界面_用户界面管理系统
3. FreshUI – Premium Web App and Admin Template
全栈程序员站长
2022/10/01
4.5K0
后台管理系统界面_用户界面管理系统
Android用户界面开发概述
相信通过前面15期的学习,Android的开发环境已经基本掌握了,如果仍有问题,欢迎到Android零基础入门技术讨论微信群交流,从本期开始正式来一步一步踏入Android开发之路。 Android应用开发的一项内容就是用户界面的开发。Android提供了非常丰富的用户界面组件,借助于这些用户界面组件,开发者可以非常方便地进行用户界面开发,而且可以开发出非常优秀的用户界面。 一、界面UI元素介绍 Android应用是运行于手机系统上的程序,这种程序给用户的第一印象就是用户界面。接下
分享达人秀
2018/02/02
2.5K0
Android用户界面开发概述
Elasticsearch Cerebro 用户界面介绍
Cerebro 是查看分片分配和最有用的界面之一通过图形界面执行常见的索引操作。 完全开放源,并且它允许您添加用户,密码或 LDAP 身份验证问网络界面。Cerebro 是对先前插件的部分重写,并且可以作为自运行工具使用应用程序服务器,基于 Scala 的Play 框架。
HLee
2020/12/29
1K0
Elasticsearch Cerebro 用户界面介绍
Elasticsearch: Cerebro 用户界面介绍
Cerebro 是以前的 Elasticsearch 插件 Elasticsearch Kopf 的演变(https://github.com/lmenezes/elasticsearch- kopf) – 这不适用于 Elasticsearch 版本5.x或更高版本,这是由于删除了 site plugins。
腾讯云大数据
2020/11/11
3.8K0
Elasticsearch: Cerebro 用户界面介绍
odoo 开发入门教程系列-一些用户界面
上一章,我们通过CSV文件添加了数据。当需要添加数据格式简单时,用CSV格式还是很方便的,当数据格式更复杂时(比如视图架构或者一个邮件模板),我们使用XML格式。比如包含HTML tags的 help field。虽然可以通过CSV文件加载这样的数据,但是使用XML更方便。
授客
2023/03/26
3.1K0
odoo 开发入门教程系列-一些用户界面
Pro/ENGINEER Wildfire 4.0的用户界面
Pro/ENGINEER Wildfire 4.0菜单栏位于标题栏的下面。系统将控制命令按性质分类放置于各个菜单中。
枫桦
2022/08/02
6410
Pro/ENGINEER Wildfire 4.0的用户界面
python图形用户界面(一):创建第一个GUI图形用户界面
本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。
叶子陪你玩
2020/03/19
1.7K0
python图形用户界面(一):创建第一个GUI图形用户界面
python图形用户界面(二):如何给GUI界面添加一个按钮?
本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。
叶子陪你玩
2020/03/23
2.3K0
python图形用户界面(二):如何给GUI界面添加一个按钮?
python图形用户界面(三):如何简单高效地实现GUI界面设计??
本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。
叶子陪你玩
2020/03/25
2.8K0
图形用户界面和游戏开发
GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述。Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的,Tk是一个工具包,最初是为Tcl设计的,后来被移植到很多其他的脚本语言中,它提供了跨平台的GUI控件。当然Tk并不是最新和最好的选择,也没有功能特别强大的GUI控件,事实上,开发GUI应用并不是Python最擅长的工作,如果真的需要使用Python开发GUI应用,wxPython、PyQt、PyGTK等模块都是不错的选择。
用户8442333
2021/05/19
1.8K0
「R」Shiny:用户界面(三)布局
在我们知道如何创建一系列输入和输出控件之后,我们需要学会如何在一个页面中对它们进行排列,以达到比较好的展示效果。这正是布局函数的工作,布局函数提供了一个应用高层次的可视化结构。
王诗翔呀
2020/07/06
3.8K0
「R」Shiny:用户界面(三)布局
操作系统的用户界面
操作系统的用户界面(或称接口) 是操作系统提供给用户与计算机打交道的外部机制。用户能够借助这种机制和系统提供的手段来控制用户所在的系统。
岳泽以
2022/10/26
1.8K0
操作系统的用户界面

相似问题

渐近符号

24

渐近符号性质-证明?

13

如何证明渐近符号

20

如何将渐近函数替换为渐近符号?

18

渐近符号图的解释

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档