gpt4 book ai didi

python - 如何实时修改我的 wxPython 代码以避免关闭/重新打开它们?

转载 作者:行者123 更新时间:2023-11-30 23:34:35 25 4
gpt4 key购买 nike

下面是 wxPython 程序的示例工作流程:编写一些代码,运行应用程序,注意我的边框大小偏离了几个像素,关闭程序,进行细微调整,重复直到看起来恰到好处。

这显然效率低下,而且我还有无数其他情况对界面进行细微调整,如果我不必关闭/重新打开程序十几次,这会容易得多。

我目前正在使用 IDLE,但对替代方案持开放态度。有没有更好的办法?我已经在 wxPython 演示应用程序中看到了它的完成,您可以在其中更改代码并立即查看结果,但我不清楚这是如何完成的。

最佳答案

您可以使用Python的reload () 内置功能。这是一个有趣的小演示:

import testApp
import wx

########################################################################
class ReloaderPanel(wx.Panel):
""""""

#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
self.testFrame = None

showAppBtn = wx.Button(self, label="Show App")
showAppBtn.Bind(wx.EVT_BUTTON, self.onShowApp)

reloadBtn = wx.Button(self, label="Reload")
reloadBtn.Bind(wx.EVT_BUTTON, self.onReload)

mainSizer = wx.BoxSizer(wx.VERTICAL)
mainSizer.Add(showAppBtn, 0, wx.ALL|wx.CENTER, 5)
mainSizer.Add(reloadBtn, 0, wx.ALL|wx.CENTER, 5)
self.SetSizer(mainSizer)

#----------------------------------------------------------------------
def onReload(self, event):
"""
Reload the code!
"""
if self.testFrame:
self.testFrame.Close()
reload(testApp)
self.showApp()
else:
self.testFrame = None

#----------------------------------------------------------------------
def onShowApp(self, event):
"""
Show the app
"""
self.showApp()

#----------------------------------------------------------------------
def showApp(self):
"""
"""
self.testFrame = testApp.TestFrame()

########################################################################
class ReloaderFrame(wx.Frame):
""""""

#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="Reloader")
panel = ReloaderPanel(self)
self.Show()

if __name__ == "__main__":
app = wx.App(False)
frame = ReloaderFrame()
app.MainLoop()

这是您可以编辑的 testApp 脚本:

import wx

########################################################################
class TestPanel(wx.Panel):
""""""

#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)

########################################################################
class TestFrame(wx.Frame):
""""""

#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="Test program")
panel = TestPanel(self)
self.Show()

if __name__ == "__main__":
app = wx.App(False)
frame = TestFrame()
app.MainLoop()

确保将第二个保存为 testApp.py。现在,如果您编辑第二个脚本并点击第一个脚本中的“重新加载”按钮,您将看到您的更改。

关于python - 如何实时修改我的 wxPython 代码以避免关闭/重新打开它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17997322/

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