javascript - block 状 : code variables

标签 javascript python variables blockly

我刚刚发现了“blockly”,这正是我一直在寻找的将我的 webApp 提升到一个新水平的方法。 我遇到的问题是我不太明白如何启动 python 或 js 代码变量。

这是我的 block :

Blockly.Language.myapp_ifdo = {
  helpUrl: '',
  init: function() {
    this.setColour(210);
    this.appendDummyInput()
        .appendTitle("if")
        .appendTitle(new Blockly.FieldDropdown([["Temperature", "Temperature"], ["Humidity", "Humidity"]]), "SENSOR")
        .appendTitle(" ")
        .appendTitle(new Blockly.FieldDropdown([["=", "="], ["≠", "≠"], ["<", "<"], ["≤", "≤"], [">", ">"], ["≥", "≥"]]), "OPERATOR")
        .appendTitle(" ")
        .appendTitle(new Blockly.FieldTextInput("0"), "SENSORVALUE");
    this.appendStatementInput("DO")
        .appendTitle("do");
    this.setInputsInline(true);
    this.setPreviousStatement(true);
    this.setNextStatement(true);
    this.setTooltip('');
  }
};

效果图是:

enter image description here

下拉列表内容:

enter image description here

我正在尝试做的事情:

如果选择“温度”,那么我想在生成代码的开头初始化变量:

temperature = None
if temperature <= '30':
  pass

如果选择“湿度”也是一样:

humidity = None
if humidity >= '60':
  pass

在我的“template.soy”文件中我有这个:

<block type="myapp_ifdo"></block>

希望我已经足够清楚了... 感谢您的帮助!

问候,

最佳答案

如果您使用内置的 Blockly 变量和其他结构,内置的 Python 生成器将为您处理。

代码演示使用函数Blockly.Generator.workspaceToCode从 block 中生成代码。一旦处理完所有 block ,它就会调用生成器的 finish 函数来预先添加变量声明。

您可以在 python.js 中亲自查看完成 :

/**
 * Prepend the generated code with the variable definitions.
 * @param {string} code Generated code.
 * @return {string} Completed code.
 */
Blockly.Python.finish = function(code) { 
...

如果您不能使用 Blockly 的内置结构,则需要编写自己的生成器代码。您可以使用 Blockly 中的这段代码作为起点,尽管这会很棘手,因为您需要维护自己的变量声明列表。

关于javascript - block 状 : code variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727093/

相关文章:

javascript - 我应该在单个或单独的调用中在 $(document) 上设置多个元素绑定(bind)吗?

python - 根据另一个数据帧的索引保留一个数据帧的索引

c# - 我在 C# 中声明了一个变量,但不能在 switch 语句中使用它

c++ - 私有(private)变量只需要在构造函数中初始化。如何?

带有图像和链接的 JavaScript 警报

javascript - 使用 CellNav + Edit 会导致网格从网格外部的输入中窃取焦点

javascript - 在特定路线上禁用 v-navigation-drawer,Vue-js

允许我为参数分配边界的 Python 曲线拟合库

python - 由于 textsize 弃用,尝试使用 Python PIL ImageDraw.textbbox 但出现错误

javascript - 在html中定义变量并将其传递给js文件