必須としてインターネット接続が必要な wxpython アプリを作成しています。したがって、接続が存在するかどうかを確認する必要があり、存在しない場合は終了します。したがって、私のコードは次のようになります。
class Example(wx.Frame):
def __init__(self, parent, title):
super(Example, self).__init__(parent, title=title,
size=(700,650))
self.InitUI()
self.Centre()
#*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.
#--------------------------------------------------------------------------------
favicon = wx.Icon(ICON_PATH, wx.BITMAP_TYPE_ICO)
wx.Frame.SetIcon(self, favicon)
self.Show()
def InitUI(self):
#checkConnection()
checkInstances()
panel = wx.Panel(self)
font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT)
font.SetPointSize(9)
font1 = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT)
font1.SetPointSize(10)
#Layout
vbox = wx.BoxSizer(wx.VERTICAL)
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
st1 = wx.StaticText(panel, label='Select Slot :')
st1.SetFont(font1)
hbox1.Add(st1, flag=wx.ALL, border=8)
try:
handler = urllib.urlopen("http://%s/api/get-slots/?api_key=%s"%(BASE_DOMAIN, API_KEY))
except:
wx.MessageBox("Error communicating with the server.", 'WARNING',wx.OK |wx.ICON_INFORMATION)
handler = None
sys.exit(0)
だから私は上記のリンク(いくつかのリンク)をチェックしたいのですが、失敗した場合はメッセージボックスを表示してから終了します。これを(インターネットをオフにして)実行すると、アプリにメッセージが表示され、[OK]をクリックすると、別のトレースバックボックスが開き、印刷されます
SystemExit:0
実際には終了しません。self.Close も使ってみました。それもうまくいきません。アプリを実行するとすぐに、checkconnection 関数を作成することを考えました。
def checkConnection():
try:
test = urllib.urlopen("http://www.google.com")
except:
sys.exit(0)
に置いた
def InitUI(self):
checkConnection()
.........
.........
これも同じことをしました。それで、印刷を避けて実際に終了する方法はありますか?
os._exit
sys.exit
うまくいきましたが、それもうまくいくはずだと思いました。ヒントはありますか?