【发布时间】:2017-11-01 10:10:28
【问题描述】:
我正在使用python2.7 + wxpython来显示一些图表数据。
我有两个类,一个(wx 类)用于管理 wx.frame,另一个(文本解码类)用于文件上下文中的解析器。我可以在 wx 类中使用 self.* 来控制 wx.frame(eg: self.SetMenuBar, self.SetTitle),我可以将这个“self”传递给另一个类来控制同一个 wx.frame 吗?
喜欢跟随简短的代码,
class CanvasFrame(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, -1, title, size=(550, 350))
self.SetBackgroundColour(wxc.NamedColour("WHITE"))
....
normal_test_mode_decode(filename, directory)
....
class normal_test_mode_decode(CanvasFrame):
def __init(self, csv_fname, csv_dir):
....
self.SetTitle(os.path.join(csv_dir, csv_fname)) #Error here
class MyApp(wx.App):
def OnInit(self):
frame = CanvasFrame(None, "wxPython mathtext demo app")
....
if __name__ == '__main__':
app = MyApp()
app.MainLoop()
如果我直接在另一个类中使用 self.SetTitle,这是错误消息。
Traceback (most recent call last):
File "D:\normal_test_mode_parser\normal_test_mode_parser.py", line 45, in OnOpen
self.decode = normal_test_mode_decode(filename, directory)
File "D:\normal_test_mode_parser\normal_test_mode_parser.py", line 64, in __init__
self.SetTitle(os.path.join(csv_dir, csv_fname))
File "C:\Python27\lib\site-packages\wx-3.0-msw\wx\_windows.py", line 455, in SetTitle
return _windows_.TopLevelWindow_SetTitle(*args, **kwargs)
TypeError: in method 'TopLevelWindow_SetTitle', expected argument 1 of type 'wxTopLevelWindow *'
我想解决这个问题,因为我的计划是 wxpython 的一个类(CanvasFrame)来管理 GUI 功能,另一个类(normal_test_mode_decode)处理数据分析功能。
谢谢!
运行此代码时,选择文件 -> 打开任何文件,然后您会看到错误。
【问题讨论】:
-
请: 1. 在您的问题中发布代码(而不是链接)。 2. 在您的问题中作为文本发布错误消息等(而不是作为链接)。
-
比尔,谢谢。我修改了我的问题,但我没有足够的嵌入图片的声誉。
-
我明白了。您需要做的是了解如何从 paste.ofcode.org 或您的终端屏幕等来源复制和粘贴文本到 SO 问题中。由于您使用的是 Windows,您可以右键单击屏幕左上角标有 c:\python27\python.exe — 在 python 图标上,以获取可让您剪切和粘贴的选项菜单。您可以通过突出显示代码然后使用复制和粘贴来复制源代码,或多或少就像在任何窗口中一样。
-
谢谢,我已经修改了我的内容。如果有任何问题,请告诉我。
-
现在的一个问题是没有人可以运行您发布的代码,因为它缺少很多行。我也注意到,尽管您使用的是 Py2.7,但 paste.ofcode.org 上的代码似乎是 Py3。您能否发布演示您需要帮助的错误的最小代码。
标签: python-2.7 inheritance wxpython