我在WxPython上发现的教程都使用了Linux中的示例,但在某些细节上似乎存在差异。
例如,在Windows中,窗口小部件后面的面板必须正确显示背景。此外,在教程中看起来很好的一些示例在我的计算机中不起作用。
那么,你知道那里有什么重要的差异,或者是一个专注于Windows的好教程吗?
编辑:我只记得这个:有人知道为什么在wx.App中需要一个OnInit()方法,而不是更合乎逻辑的__init__
()?
答案 0 :(得分:2)
我注意到我在一段时间内写过的小型GUI中出现了奇怪的特性,但是我已经很长时间才尝试了这些细节是一个相当遥远的记忆。你有一些失败的具体例子吗?也许我们可以改进它们并修复错误?
你试过the official wxPython tutorials吗? ......或者你是在追求更具体的东西?
<强> R.E。你的编辑 - 你应该使用OnInit()
,因为你是子类wx.App(即它是wxWidgets而不是Python的要求),wxPython实现是尽可能的,只是wxWidgets的包装器。
[编辑] Zetcode有a fairly lengthy tutorial on wxPython。我自己并没有仔细研究过,但它可能会有所帮助吗?
wxWidgets::wxApp::OnInit()
文档非常明确:
这必须由应用程序提供,并且通常会创建应用程序的主窗口,可选择调用wxApp :: SetTopWindow。如果函数返回true,您可以使用OnExit清除此处初始化的任何内容。
如果wxWidgets没有提供通用接口,那么与Python的__init__(self,...)
相比,你必须在C ++中使用不同的东西(使用构造函数)。使用独立于语言的on-initialisation允许wxWidgets端口与其他语言看起来更相似,这应该是一件好事吗? : - )
答案 1 :(得分:0)
编辑:我刚才记得:有人知道为什么在为wx.App子类化时需要一个OnInit()方法,而不是更合乎逻辑的
__init__()
?
我使用OnInit()
来表示对称性:还有OnExit()
方法。
编辑:我可能错了,但我认为不需要使用OnInit()
。
答案 2 :(得分:0)
我发现了一些小差异,但不记得所有这些差异。这是两个:
1)布局可能略有不同,例如,当在另一个操作系统中执行操作时,导致操作不完全适合窗口。我没有调查过这个的原因,但最常见的情况是我使用头寸而不是sizer来安排事情。
2)我必须在Windows中明确地调用Refresh
。例如,如果将一个面板放在另一个面板上,则在调用“刷新”之前,您将不会将其视为Windows中的顶部面板。
我一般情况下,我在Linux中编写应用程序并在Windows中运行它们,并且事情的工作方式相当,所以这是一种合理的方法,但是当操作系统切换后,当某些内容完全直接从门外运行时,我很少见。