wx.App对象必须先创建!第二部分
我看到另一个帖子讨论这个问题,但那个解决办法对我没用。这段代码的前后两部分单独运行都没问题,但放在一起就不行了。**(我在那个帖子里没能让缩进的代码选项正常工作,所以我在这里重新写了一遍……所以现在可能不止一个错误……)
import wx
import numpy as np
import os
import numpy
if __name__ == "__main__":
app = wx.PySimpleApp()
wildcard = "Python source (*.py)|*.py|" \
"Compiled Python (*.pyc)|*.pyc|" \
"All files (*.*)|*.*"
dlg = wx.MessageDialog(None, "Run program?",
'Power over DeltaT',
wx.YES_NO | wx.ICON_QUESTION)
retCode = dlg.ShowModal()
if (retCode == wx.ID_YES):
dialog = wx.FileDialog(None, "File", os.getcwd(), "", wildcard, wx.OPEN)
if dialog.ShowModal() == wx.ID_OK:
x, y, z = np.loadtxt(dialog.GetPath(), dtype=float, delimiter=',',
skiprows=2,usecols=(6, 18, 19), unpack=True)
dialog.Destroy()
print x
f = (z-y) / (x+.01)
average=numpy.sum(f)/f.shape[0]
print average
dlg.Destroy()
class StaticTextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Average Watts per Delta T', size=(400, 300))
panel = wx.Panel(self, -1)
wx.StaticText(panel, -1, "The average :", (100, 100))
x=(13.21)
stra = str(x)
text = wx.StaticText(panel, -1, stra, (200, 100))
font = wx.Font(18, wx.DECORATIVE, wx.ITALIC, wx.NORMAL)
text.SetFont(font)
app = wx.PySimpleApp()
frame = StaticTextFrame()
frame.Show()
app.MainLoop()
1 个回答
0
好的……所以你遇到的主要问题可能是当你双击.py文件时(也就是把它当作主程序运行);假设dlg.Destroy()
的缩进是正确的。
你的问题在于wx.Python一次只允许运行一个应用程序,而你实际上调用了两个:一个在主程序里面,一个在外面。
把文件末尾的app = wx.PySimpleApp()
和app.MainLoop()
删掉,然后把框架的调用放到if __name__=='__main__'
的最后面。
虽然我还没有实际用过它,但我建议你可以考虑转向Kivy:http://kivy.org/#home
看起来很不错。