0

この問題に関する別の投稿を見ましたが、解決策はうまくいきませんでした。このコードの 2 つの部分は別々に機能しますが、一緒には機能しません。**(この投稿のインデント コード オプションが機能しなかったので、ここで再作成しました....この時点で、複数の間違いがある可能性があります...)

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()
4

1 に答える 1

0

わかりました... .py ファイルをダブルクリックしたとき (つまり、メインとして実行したとき) にのみ発生する主な問題です。dlg.Destroy()これは、適切にインデントされていることを前提としています。

したがって、問題は、wx.Python が一度に 1 つのアプリのみを実行する必要があり、技術的には 2 つを呼び出していることです。1 つはメインの内部で、もう 1 つは外部です。

app = wx.PySimpleApp()ファイルの末尾からとを削除app.MainLoop()し、フレーム呼び出しを末尾に配置します。if __name__=='__main__'

実際にはまだコーディングしていませんが、(将来の参考のために) 私のアドバイスは、Kivy に移行することです: http://kivy.org/#home

それはすばらしく見えます。

于 2013-03-18T02:13:19.223 に答える