分页: 1 / 1

python程序的调用

发表于 : 2014-08-14 15:30
jinjiachen
初学了python,编了个小程序,想实现的功能如下:
1。做一个图形界面的小程序,已完成,见文件squaresTEM.py
2。在另上个程序中调用squaresTEM.py

我是这样处理的,先前有前辈指导我说将被调用的文件写成函数的形式,于是我将squaresTEM.py改写成了squares.py中的内容,并在menu.py中调用squares.py,但是没有成功,请问是什么原因,我找不到错误所在,python里也没有报错。
我已将相应文件上传,愿意的话请大家帮我看看,谢谢

为了方便大家阅读,我将文件中的内容贴出:

squaresTEM.py中内容如下:

代码: 全选

#/usr/bin/env python
#coding=utf-8
import wx
import math
#def calc():
class myframe(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self,None,-1,'方板质量计算')
            panel=wx.Panel(self)
            wx.StaticText(panel,-1,'请输入钢板的长度:',pos=(50,50))
            wx.StaticText(panel,-1,'请输入钢板的宽度:',pos=(50,100))
            wx.StaticText(panel,-1,'请输入钢板的高度:',pos=(50,150))
            self.text1=wx.TextCtrl(panel,-1,'',pos=(160,45))
            self.text2=wx.TextCtrl(panel,-1,'',pos=(160,95))
            self.text3=wx.TextCtrl(panel,-1,'',pos=(160,145))
            self.text4=wx.TextCtrl(panel,-1,'',pos=(200,250))
#        textvalue1=text1.GetStringSelection()
            self.button=wx.Button(panel,-1,'计算',pos=(100,245))
            self.Bind(wx.EVT_BUTTON,self.calcu,self.button)
        def calcu(self,event):
            length=float(self.text1.GetValue())
            width=float(self.text2.GetValue())
            height=float(self.text3.GetValue())
            density=7850
            ans=length*width*height*7850/pow(10,9)
            self.text4.SetValue(`ans`)
if __name__=='__main__':
            myapp=wx.PySimpleApp()
            frame=myframe()
            frame.Show()
            myapp.MainLoop()

squares.py中的内容如下:

代码: 全选

#/usr/bin/env python
#coding=utf-8
def calc():
    import wx
    import math
#def calc():
    class myframe(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self,None,-1,'方板质量计算')
            panel=wx.Panel(self)
            wx.StaticText(panel,-1,'请输入钢板的长度:',pos=(50,50))
            wx.StaticText(panel,-1,'请输入钢板的宽度:',pos=(50,100))
            wx.StaticText(panel,-1,'请输入钢板的高度:',pos=(50,150))
            self.text1=wx.TextCtrl(panel,-1,'',pos=(160,45))
            self.text2=wx.TextCtrl(panel,-1,'',pos=(160,95))
            self.text3=wx.TextCtrl(panel,-1,'',pos=(160,145))
            self.text4=wx.TextCtrl(panel,-1,'',pos=(200,250))
#        textvalue1=text1.GetStringSelection()
            self.button=wx.Button(panel,-1,'计算',pos=(100,245))
            self.Bind(wx.EVT_BUTTON,self.calcu,self.button)
        def calcu(self,event):
            length=float(self.text1.GetValue())
            width=float(self.text2.GetValue())
            height=float(self.text3.GetValue())
            density=7850
            ans=length*width*height*7850/pow(10,9)
            self.text4.SetValue(`ans`)
    if __name__=='__main__':
            myapp=wx.PySimpleApp()
            frame=myframe()
            frame.Show()
            myapp.MainLoop()
menu.py中的内容如下:

代码: 全选

#/usr/bin/env python
#coding=utf-8
import wx
import squares
class myframe(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,None,-1,'计算软件')
        panel=wx.Panel(self)
        mymenubar=wx.MenuBar()
        mymenu1=wx.Menu()
        mymenu2=wx.Menu()
        myexit=mymenu1.Append(wx.NewId(),'&退出')
        item1=mymenu2.Append(-1,'方板质量')
        mymenu2.Append(-1,'圆板质量')
        mymenu2.Append(-1,'钢管')
        mymenu2.Append(-1,'材料下偏差')
        mymenu2.Append(-1,'安全阀最小口径')
        mymenubar.Append(mymenu1,'文件')
        mymenubar.Append(mymenu2,'计算')
        self.SetMenuBar(mymenubar)
        self.Bind(wx.EVT_MENU,self.exit,myexit)
        self.Bind(wx.EVT_MENU,self.squ,item1)
    def squ(self,event):
        squares.calc()
    def exit(self,event):
        self.Close(True)
if __name__=='__main__':
    myapp=wx.PySimpleApp()
    frame=myframe()
    frame.Show()
    myapp.MainLoop()

Re: python程序的调用

发表于 : 2014-08-14 18:51
jinjiachen
大神们都还没下班么

Re: python程序的调用

发表于 : 2014-08-14 19:52
jinjiachen
啊,别沉,ee,南瓜,real,qy,你们快来,想你们了 :em03

Re: python程序的调用

发表于 : 2014-08-14 20:09
zhw2101024
有个东西叫pdb :em09
话说这个是python2的还是python3的?我执行squaresTEM.py在第6行报错,python版本是2.7.3

Re: python程序的调用

发表于 : 2014-08-14 20:38
jinjiachen
zhw2101024 写了:有个东西叫pdb :em09
话说这个是python2的还是python3的?我执行squaresTEM.py在第6行报错,python版本是2.7.3
pdb是调试的?过会去看看
我的是arch,python有两个,一个是2.7 一个是3.4,不过wxpython只支持2.7现在好像,所以我是用2.7运行的,我运行了下没问题啊,linux 和win都是2.7,正常运行

Re: python程序的调用

发表于 : 2014-08-14 21:07
zhw2101024
jinjiachen 写了:
zhw2101024 写了:有个东西叫pdb :em09
话说这个是python2的还是python3的?我执行squaresTEM.py在第6行报错,python版本是2.7.3
pdb是调试的?过会去看看
我的是arch,python有两个,一个是2.7 一个是3.4,不过wxpython只支持2.7现在好像,所以我是用2.7运行的,我运行了下没问题啊,linux 和win都是2.7,正常运行
可能是我没装wxpython吧。
有依赖应该在帖子里提到,连运行都不能就谈不上排错了

Re: python程序的调用

发表于 : 2014-08-14 22:12
jinjiachen
zhw2101024 写了:
jinjiachen 写了:
zhw2101024 写了:有个东西叫pdb :em09
话说这个是python2的还是python3的?我执行squaresTEM.py在第6行报错,python版本是2.7.3
pdb是调试的?过会去看看
我的是arch,python有两个,一个是2.7 一个是3.4,不过wxpython只支持2.7现在好像,所以我是用2.7运行的,我运行了下没问题啊,linux 和win都是2.7,正常运行
可能是我没装wxpython吧。
有依赖应该在帖子里提到,连运行都不能就谈不上排错了
噢~还是很感谢你啊,你安装的图形界面是什么?qt?gtk?能说说你用的那个的体会吗?

Re: python程序的调用

发表于 : 2014-08-15 6:47
jinjiachen
思索了一晚上 感觉问题出在有两框架 并且名字相同 而且if那段重复,一个程序只有一个主框架 所以不可能被运行if后的代码,除了menu的,所以我试图把框架名用123区分 这次报错了!!有错比没。错好~提示square中的框架名不是全局变量,还在探索中,看到的请脂条明路~

Re: python程序的调用

发表于 : 2014-08-15 8:23
zhw2101024
jinjiachen 写了:
zhw2101024 写了:
jinjiachen 写了:
zhw2101024 写了:有个东西叫pdb :em09
话说这个是python2的还是python3的?我执行squaresTEM.py在第6行报错,python版本是2.7.3
pdb是调试的?过会去看看
我的是arch,python有两个,一个是2.7 一个是3.4,不过wxpython只支持2.7现在好像,所以我是用2.7运行的,我运行了下没问题啊,linux 和win都是2.7,正常运行
可能是我没装wxpython吧。
有依赖应该在帖子里提到,连运行都不能就谈不上排错了
噢~还是很感谢你啊,你安装的图形界面是什么?qt?gtk?能说说你用的那个的体会吗?
我这里应该是gtk库和qt库同时在用的。
我没用python写图形界面,所以没有python-gtk或者python-qt之类的。
文件是在windows下上传的吗?我下载下来的文件里面有乱码

Re: python程序的调用

发表于 : 2014-08-15 8:35
jinjiachen
zhw2101024 写了:
jinjiachen 写了:
zhw2101024 写了:
jinjiachen 写了:
zhw2101024 写了:有个东西叫pdb :em09
话说这个是python2的还是python3的?我执行squaresTEM.py在第6行报错,python版本是2.7.3
pdb是调试的?过会去看看
我的是arch,python有两个,一个是2.7 一个是3.4,不过wxpython只支持2.7现在好像,所以我是用2.7运行的,我运行了下没问题啊,linux 和win都是2.7,正常运行
可能是我没装wxpython吧。
有依赖应该在帖子里提到,连运行都不能就谈不上排错了
噢~还是很感谢你啊,你安装的图形界面是什么?qt?gtk?能说说你用的那个的体会吗?
我这里应该是gtk库和qt库同时在用的。
我没用python写图形界面,所以没有python-gtk或者python-qt之类的。
文件是在windows下上传的吗?我下载下来的文件里面有乱码
文件是在win下上传的,在win中用emacs打开有些中文不能显示,不过到linux下的emacs下打开能正常显示啊,请问一下为什么有时候会有乱码现象,有时候两个系统互相传又没有?我知道是编码问题,不过同样是中文,编码应该用的同一个吧?

Re: python程序的调用

发表于 : 2014-08-15 12:32
zhw2101024
jinjiachen 写了:
zhw2101024 写了:
jinjiachen 写了:
zhw2101024 写了:
jinjiachen 写了:
zhw2101024 写了:有个东西叫pdb :em09
话说这个是python2的还是python3的?我执行squaresTEM.py在第6行报错,python版本是2.7.3
pdb是调试的?过会去看看
我的是arch,python有两个,一个是2.7 一个是3.4,不过wxpython只支持2.7现在好像,所以我是用2.7运行的,我运行了下没问题啊,linux 和win都是2.7,正常运行
可能是我没装wxpython吧。
有依赖应该在帖子里提到,连运行都不能就谈不上排错了
噢~还是很感谢你啊,你安装的图形界面是什么?qt?gtk?能说说你用的那个的体会吗?
我这里应该是gtk库和qt库同时在用的。
我没用python写图形界面,所以没有python-gtk或者python-qt之类的。
文件是在windows下上传的吗?我下载下来的文件里面有乱码
文件是在win下上传的,在win中用emacs打开有些中文不能显示,不过到linux下的emacs下打开能正常显示啊,请问一下为什么有时候会有乱码现象,有时候两个系统互相传又没有?我知道是编码问题,不过同样是中文,编码应该用的同一个吧?
中文有很多种编码,光简体的就有GBK、GB2312、GB18030、UTF8,业界通行的做法是需要进行传输的统一用UTF8编码,各平台之间兼容性最好。只有内部处理在必要的时候才会转换成其它编码。
我用的是vim,一个全是问号,一个是乱码。跟编辑器的字符集设定也有关系。
建议更新一下帖子里的代码吧,123什么的都给加上。qdb我也没用过,不过感觉这个问题通过print输出的方法调试更方便些。第一行的#后面少了一个!,所以直接执行一直不成功