问题是,任何类都不执行窗口小部件类中的函数,当按下键但命令不起作用时,它不会给出任何错误.

Py.


import kivy

from kivy.app import App

from kivy.uix.widget import Widget

from kivy.uix.boxlayout import BoxLayout

from kivy.uix.button import Button

from kivy.uix.label import Label

from kivy.lang import Builder

from kivy.clock import Clock

from functools import partial

from kivy.uix.popup import Popup

Builder.load_file("wideneme.kv")

class Tryer(Popup):

    

    def prot(self):

        MyLayout().play_activator()

class MyLayout(Widget):

    def __init__(self, **kwargs):

        super(MyLayout, self).__init__(**kwargs)

        

        self.empty = False

    

    def op(self):

        den = Tryer()

        den.open()

        

    def play_activator(self):

        self.ids.bt.text = "Changes"

        

class FirstApp(App):

    def __init__(self, **kwargs):

        super().__init__(**kwargs)

        

        self.ml = MyLayout()

        

    def build(self, **kwargs):

        return self.ml

        

if __name__ == "__main__":

    FirstApp().run()

KV.


<MyLayout>:

    BoxLayout:

        orientation: "vertical"

        Button:

            id: bt

            text: "ML"

            size_hint_x: 2

            size_hint_y: 2

            on_release: root.op()

            

<Tryer>:

    size_hint_x: .5

    size_hint_y: .5

    Button:

        id: btn

        text: "Den"

        size_hint_x: 1

        size_hint_y: 1

        on_release: root.prot()

我也try 给一个正常变量赋值,但结果相同.我不能从KV文件内部运行它,因为我需要从原始代码中的python文件运行它,所以不要建议从KV文件内部执行app.root之类的命令,原始代码具有与此处相同的代码,但它没有任何键来运行Widget类中的函数,我无法放置它.它在诸如对象属性和id之类的解决方案中不起作用.

推荐答案

您的代码中的问题是代码行:

MyLayout().play_activator()

问题是这行代码正在创建一个MyLayout的新实例并调用它的play_activator()方法.但是,MyLayout的新实例不是您的图形用户界面的一部分,因此看不到任何效果.修复方法是确保引用实际位于您的图形用户界面中的MyLayout的实例.有两种简单的方法可以做到这一点:

  1. 修改prot()方法中的代码,如下所示:

    def prot(self):
        # MyLayout().play_activator()
        App.get_running_app().root.play_activator()
    
  2. 如下所示修改您的kv代码:

    on_release: app.root.play_activator()
    

上述两种 Select 中的任何一种都应该有效.

Python相关问答推荐

按日期和组增量计算总价值

使用Python C API重新启动Python解释器

按 struct 值对Polars列表[struct[]]排序

Python无法在已导入的目录中看到新模块

使文本输入中的文本与标签中的文本相同

如何用symy更新分段函数

在Pandas框架中截短至固定数量的列

如何使用scipy从频谱图中回归多个高斯峰?

韦尔福德方差与Numpy方差不同

Django mysql图标不适用于小 case

处理(潜在)不断增长的任务队列的并行/并行方法

输出中带有南的亚麻神经网络

梯度下降:简化要素集的运行时间比原始要素集长

关于Python异步编程的问题和使用await/await def关键字

为什么NumPy的向量化计算在将向量存储为类属性时较慢?'

改进大型数据集的框架性能

joblib:无法从父目录的另一个子文件夹加载转储模型

在Python中使用if else或使用regex将二进制数据如111转换为001""

为什么if2/if3会提供两种不同的输出?

为什么在FastAPI中创建与数据库的连接时需要使用生成器?