gpt4 book ai didi

python - 如何调试 wxpython 应用程序?

转载 作者:IT老高 更新时间:2023-10-28 21:02:10 26 4
gpt4 key购买 nike

我是第一次尝试 wxpython。我为 python 程序编写了一个 GUI,当我运行它时,它会在 GUI 中产生一些错误,但 GUI 消失得很快,快到让我无法读取错误信息。

是否有任何日志可以检查错误消息? (我正在运行 Mac OS X)或任何其他方式?

提前感谢您的帮助。

更新:这是给我带来问题的代码...

#!/usr/bin/python

import wx

class MyApp (wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(390, 350))
menubar = wx.MenuBar()
help = wx.Menu()
help.Append(ID_ABOUT, '&About')
self.Bind(wx.EVT_MENU, self.OnAboutBox, id=wx.ID_ABOUT)
menubar.Append(help, '&Help')
self.SetMenuBar(menubar)

self.Centre()
self.Show(True)

panel = wx.Panel(self, -1)

font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT)
font.SetPointSize(9)

vbox = wx.BoxSizer(wx.VERTICAL)

hbox1 = wx.BoxSizer(wx.HORIZONTAL)
st1 = wx.StaticText(panel, -1, 'Class Name')
st1.SetFont(font)
hbox1.Add(st1, 0, wx.RIGHT, 8)
tc = wx.TextCtrl(panel, -1)
hbox1.Add(tc, 1)
vbox.Add(hbox1, 0, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.TOP, 10)

vbox.Add((-1, 10))

hbox2 = wx.BoxSizer(wx.HORIZONTAL)
st2 = wx.StaticText(panel, -1, 'Matching Classes')
st2.SetFont(font)
hbox2.Add(st2, 0)
vbox.Add(hbox2, 0, wx.LEFT | wx.TOP, 10)

vbox.Add((-1, 10))

hbox3 = wx.BoxSizer(wx.HORIZONTAL)
tc2 = wx.TextCtrl(panel, -1, style=wx.TE_MULTILINE)
hbox3.Add(tc2, 1, wx.EXPAND)
vbox.Add(hbox3, 1, wx.LEFT | wx.RIGHT | wx.EXPAND, 10)

vbox.Add((-1, 25))

hbox4 = wx.BoxSizer(wx.HORIZONTAL)
cb1 = wx.CheckBox(panel, -1, 'Case Sensitive')
cb1.SetFont(font)
hbox4.Add(cb1)
cb2 = wx.CheckBox(panel, -1, 'Nested Classes')
cb2.SetFont(font)
hbox4.Add(cb2, 0, wx.LEFT, 10)
cb3 = wx.CheckBox(panel, -1, 'Non-Project classes')
cb3.SetFont(font)
hbox4.Add(cb3, 0, wx.LEFT, 10)
vbox.Add(hbox4, 0, wx.LEFT, 10)

vbox.Add((-1, 25))

hbox5 = wx.BoxSizer(wx.HORIZONTAL)
btn1 = wx.Button(panel, -1, 'Ok', size=(70, 30))
hbox5.Add(btn1, 0)
btn2 = wx.Button(panel, -1, 'Close', size=(70, 30))
hbox5.Add(btn2, 0, wx.LEFT | wx.BOTTOM , 5)
vbox.Add(hbox5, 0, wx.ALIGN_RIGHT | wx.RIGHT, 10)

panel.SetSizer(vbox)
self.Centre()
self.Show(True)

def OnAboutBox(self, event):
description = """ describe my app here """

licence = """ blablabla """


info = wx.AboutDialogInfo()

info.SetIcon(wx.Icon('icons/icon.png', wx.BITMAP_TYPE_PNG))
info.SetName('')
info.SetVersion('1.0')
info.SetDescription(description)
info.SetCopyright('')
info.SetWebSite('')
info.SetLicence(licence)
info.AddDeveloper('')
info.AddDocWriter('')
info.AddArtist('')
info.AddTranslator('')

wx.AboutBox(info)

app = wx.App()
MyApp (None, -1, 'Go To Class')
app.MainLoop()

最佳答案

不确定 mac 版本,但是 wxPython 有一个内置方法可以将错误重定向到一个窗口(不幸的是,当您的应用程序崩溃时它会关闭,但它对于捕获静默失败的错误很有用)或日志文件(仅在您的应用程序关闭后更新):

app = wx.App(redirect=True) 
app = wx.App(redirect=True,filename="mylogfile.txt")

无论您如何启动应用程序,这些都将起作用。见 here了解更多

关于python - 如何调试 wxpython 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/812911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com