首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改Chaquopy中的UI元素

更改Chaquopy中的UI元素
EN

Stack Overflow用户
提问于 2020-05-13 17:06:10
回答 1查看 171关注 0票数 3

目前,我正在尝试从Python模块中了解如何更改MainActivity中的文本视图( UI是用Java编写的)。我知道我必须将我的主体活动以某种方式传递给我的python模块,但是我仍然无法找到如何正确地完成它。我正在使用Chaquopy进行python交互。

我现在的主要活动是这样的

代码语言:javascript
复制
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); //set the layout
        final TextView simpleTextView = (TextView) findViewById(R.id.simpleTextView); //get the id for TextView
        Button changeText = (Button) findViewById(R.id.btnChangeText); //get the id for button
        changeText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                simpleTextView.setText("After Clicking"); //set the text after clicking button
            }
        });
    }


}

现在,我需要在python中使用一个函数来操作文本视图。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-13 18:10:03

总之,您需要做的是:

  • 将Python模块添加到适当的地点中的源代码中。
  • 使用getModule加载Python模块,并使用callAttr调用Python函数(参见Java文档)。

具体来说,你可以:

  • 让Python函数返回一个字符串,然后让Java代码将它传递给setText。例如,setText(mod.callAttr(...).toString()),其中modgetModule的返回值。

或者:

  • 使用TextView将callAttr对象传递给Python函数,然后让Python代码调用setText。例如,如果您的Python函数名为f,那么您将编写mod.callAttr("f", simpleTextView),该函数将接收TextView作为其参数。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61780634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档