gpt4 book ai didi

python - 在 wxPython 中创建主框架的子框架

转载 作者:太空狗 更新时间:2023-10-29 17:48:18 27 4
gpt4 key购买 nike

我正在尝试在 wxPython 中创建一个新框架,它是主框架的子框架,这样当主框架关闭时,子框架也将关闭。

这是我遇到的问题的一个简化示例:

#! /usr/bin/env python

import wx

class App(wx.App):

def OnInit(self):
frame = MainFrame()
frame.Show()
self.SetTopWindow(frame)
return True

class MainFrame(wx.Frame):

title = "Main Frame"

def __init__(self):
wx.Frame.__init__(self, None, 1, self.title) #id = 5

menuFile = wx.Menu()

menuAbout = wx.Menu()
menuAbout.Append(2, "&About...", "About this program")

menuBar = wx.MenuBar()
menuBar.Append(menuAbout, "&Help")
self.SetMenuBar(menuBar)

self.CreateStatusBar()

self.Bind(wx.EVT_MENU, self.OnAbout, id=2)

def OnQuit(self, event):
self.Close()

def OnAbout(self, event):
AboutFrame().Show()

class AboutFrame(wx.Frame):

title = "About this program"

def __init__(self):
wx.Frame.__init__(self, 1, -1, self.title) #trying to set parent=1 (id of MainFrame())


if __name__ == '__main__':
app = App(False)
app.MainLoop()

如果我将 AboutFrame 的父框架设置为 None(在第 48 行),那么 About 框架将成功创建并显示,但当主框架关闭时它仍保持打开状态。

这是我应该采用的方法来创建主框架的子框架,还是我应该以不同的方式来做,例如。使用主框架的 onClose 事件关闭任何子框架(这种方式听起来很“hackish”)。

如果我采用了正确的方法,为什么它不起作用?

最佳答案

class AboutFrame(wx.Frame):

title = "About this program"

def __init__(self):
wx.Frame.__init__(self, wx.GetApp().TopWindow, title=self.title)

关于python - 在 wxPython 中创建主框架的子框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1185156/

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