python程序的调用

软件和网站开发以及相关技术探讨
回复
jinjiachen
帖子: 2127
注册时间: 2012-12-16 15:43
系统: debian
送出感谢: 9 次
接收感谢: 27 次

python程序的调用

#1

帖子 jinjiachen » 2014-08-14 15:30

初学了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()
附件
squaresTEM.py
(1.27 KiB) 下载 27 次
squares.py
(1.3 KiB) 下载 43 次
menu.py
(973 Bytes) 下载 30 次
jinjiachen
帖子: 2127
注册时间: 2012-12-16 15:43
系统: debian
送出感谢: 9 次
接收感谢: 27 次

Re: python程序的调用

#2

帖子 jinjiachen » 2014-08-14 18:51

大神们都还没下班么
jinjiachen
帖子: 2127
注册时间: 2012-12-16 15:43
系统: debian
送出感谢: 9 次
接收感谢: 27 次

Re: python程序的调用

#3

帖子 jinjiachen » 2014-08-14 19:52

啊,别沉,ee,南瓜,real,qy,你们快来,想你们了 :em03
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
送出感谢: 9 次
接收感谢: 70 次
联系:

Re: python程序的调用

#4

帖子 zhw2101024 » 2014-08-14 20:09

有个东西叫pdb :em09
话说这个是python2的还是python3的?我执行squaresTEM.py在第6行报错,python版本是2.7.3
jinjiachen
帖子: 2127
注册时间: 2012-12-16 15:43
系统: debian
送出感谢: 9 次
接收感谢: 27 次

Re: python程序的调用

#5

帖子 jinjiachen » 2014-08-14 20:38

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,正常运行
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
送出感谢: 9 次
接收感谢: 70 次
联系:

Re: python程序的调用

#6

帖子 zhw2101024 » 2014-08-14 21:07

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吧。
有依赖应该在帖子里提到,连运行都不能就谈不上排错了
jinjiachen
帖子: 2127
注册时间: 2012-12-16 15:43
系统: debian
送出感谢: 9 次
接收感谢: 27 次

Re: python程序的调用

#7

帖子 jinjiachen » 2014-08-14 22:12

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?能说说你用的那个的体会吗?
jinjiachen
帖子: 2127
注册时间: 2012-12-16 15:43
系统: debian
送出感谢: 9 次
接收感谢: 27 次

Re: python程序的调用

#8

帖子 jinjiachen » 2014-08-15 6:47

思索了一晚上 感觉问题出在有两框架 并且名字相同 而且if那段重复,一个程序只有一个主框架 所以不可能被运行if后的代码,除了menu的,所以我试图把框架名用123区分 这次报错了!!有错比没。错好~提示square中的框架名不是全局变量,还在探索中,看到的请脂条明路~
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
送出感谢: 9 次
接收感谢: 70 次
联系:

Re: python程序的调用

#9

帖子 zhw2101024 » 2014-08-15 8:23

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下上传的吗?我下载下来的文件里面有乱码
jinjiachen
帖子: 2127
注册时间: 2012-12-16 15:43
系统: debian
送出感谢: 9 次
接收感谢: 27 次

Re: python程序的调用

#10

帖子 jinjiachen » 2014-08-15 8:35

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下打开能正常显示啊,请问一下为什么有时候会有乱码现象,有时候两个系统互相传又没有?我知道是编码问题,不过同样是中文,编码应该用的同一个吧?
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
送出感谢: 9 次
接收感谢: 70 次
联系:

Re: python程序的调用

#11

帖子 zhw2101024 » 2014-08-15 12:32

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输出的方法调试更方便些。第一行的#后面少了一个!,所以直接执行一直不成功
回复

回到 “软件/网站开发”