搜索
查看: 1791|回复: 3
打印 上一主题 下一主题

请问调用Python源代码错在哪里,运行没有结果。

[复制链接]

9

主题

17

帖子

103

积分

一级会员

Rank: 2

积分
103
跳转到指定楼层
楼主
发表于 2017-12-10 11:17:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问源代码错在哪里,运行没有结果。
-------------------------------------------------------------------------------------------------------------------
import win.ui;
import py;
/*DSG{{*/
var winform = win.form(text="加法计算器";right=256;bottom=331)
winform.add(
button={cls="button";text="计算";left=72;top=267;right=188;bottom=305;z=1};
equal={cls="static";left=30;top=156;right=237;bottom=181;transparent=1;z=6};
n1={cls="edit";left=72;top=30;right=188;bottom=68;edge=1;font=LOGFONT(h=-29);multiline=1;z=3};
n2={cls="edit";left=72;top=92;right=188;bottom=130;edge=1;font=LOGFONT(h=-29);multiline=1;z=4};
static={cls="static";text="+";left=17;top=66;right=65;bottom=101;align="center";center=1;font=LOGFONT(h=-29);transparent=1;z=5};
sum={cls="edit";left=72;top=204;right=188;bottom=242;edge=1;font=LOGFONT(h=-29);multiline=1;z=2}
)
/*}}*/

var code = string.load("add.py");
py.exec(code);
py.exec(code);
__main__ = py.addModule("__main__"); //创建模块对象

var i =0 ;
for(i=1;50;1){
winform.equal.text=winform.equal.text+"-"
}

winform.button.oncommand = function(id,event){
//winform.msgbox( winform.button.text );
var n1=tonumber(winform.n1.text);
var n2=tonumber(winform.n2.text);
var s = tonumber(__main__.add(n1,n2));
winform.sum.text=s;
}

winform.show()
win.loopMessage();


--------------------------------------------------------------------
add.py

def add(a,b):
return a+b
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13973
沙发
发表于 2017-12-10 12:21:32 | 只看该作者
你的Python代码本身就有语法错误,少了缩进,
Python中空格就是代码的一部分,不要轻易删除空格。

你要一个字符重复50次,可以写 string.repeat(50,"-"); 不用写循环。
而且你要在界面上显示个水平线,你拖个static控件上去设成不透明的黑色不就可以了?!

现在的py扩展库,也不需要写 py.addModule("__main__");
直接写 py.main 就可以了,这个对象已经创建好了。

import win.ui;
/*DSG{{*/
var winform = win.form(text="加法计算器";right=256;bottom=331)
winform.add(
button={cls=
"button";text="计算";left=72;top=267;right=188;bottom=305;z=1};
hr={cls=
"static";left=17;top=172;right=236;bottom=173;bgcolor=4934475;z=6};
n1={cls=
"edit";text="2";left=72;top=30;right=188;bottom=68;edge=1;multiline=1;z=3};
n2={cls=
"edit";text="3";left=72;top=92;right=188;bottom=130;edge=1;multiline=1;z=4};
static={cls=
"static";text="+";left=17;top=66;right=65;bottom=101;align="center";center=1;transparent=1;z=5};
sum={cls=
"edit";left=72;top=204;right=188;bottom=242;edge=1;multiline=1;z=2}
)
/*}}*/

import py;
var code = "
def add(a,b):
    return a+b
"

py.exec(code);

winform.button.oncommand =
function(id,event){
   
var n1 = tonumber(winform.n1.text);
   
var n2 = tonumber(winform.n2.text);
    winform.sum.text= py.main.add(n1,n2) ;
}

winform.show();
win.loopMessage();


回复

使用道具 举报

9

主题

17

帖子

103

积分

一级会员

Rank: 2

积分
103
板凳
 楼主| 发表于 2017-12-10 21:14:37 | 只看该作者
Jacen.He 发表于 2017-12-10 12:21
你的Python代码本身就有语法错误,少了缩进,
Python中空格就是代码的一部分,不要轻易删除空格。

谢谢
回复

使用道具 举报

2

主题

4

帖子

26

积分

新手入门

Rank: 1

积分
26
地板
发表于 2018-6-7 14:30:05 | 只看该作者
本帖最后由 ibsmagic 于 2018-6-7 14:31 编辑
  1. import win.ui;
  2. import console;
  3. /*DSG{{*/
  4. var winform = win.form(text="Run Python";right=714;bottom=229)
  5. winform.add(
  6. btnRunPy={cls="button";text="Run Python";left=63;top=76;right=167;bottom=106;z=1};
  7. edtN1={cls="edit";left=211;top=37;right=267;bottom=58;edge=1;z=2};
  8. edtN2={cls="edit";left=211;top=119;right=267;bottom=140;edge=1;z=3};
  9. stcSum={cls="static";text="Result";left=332;top=79;right=386;bottom=110;transparent=1;z=4}
  10. )
  11. /*}}*/

  12. import py;

  13. var code = string.load("/add.py3");
  14. console.printf("%s", code)
  15. //py3.run("/add.py3");
  16. py.exec(code);
  17. //console.pause()
  18. //py3.exec(code);
  19. //__main__ = py3.addModule("__main__"); //创建模块对象


  20. winform.btnRunPy.oncommand = function(id,event){
  21.         var n1=tonumber(winform.edtN1.text);
  22.         var n2=tonumber(winform.edtN2.text);
  23.         var s = py.main.add(n1,n2);
  24.         winform.stcSum.text=s;
  25. }

  26. winform.show(true);
  27. win.loopMessage();
复制代码


python 代码
  1. def add(a,b):
  2.         return a+b
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-10-24 06:32 , Processed in 0.062500 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表