【问题标题】:wxpython create toolbar with calling other classwxpython 创建工具栏并调用其他类
【发布时间】:2016-11-28 10:59:01
【问题描述】:

我正在尝试在 wx python 中制作工具栏。我可以在我的主文件中制作它,但我使用了许多 .py 文件来使编程更清晰。

在我的主文件中,我有以下代码:

from microanalysis_menubar_view import TBar as toolbar_view

class Main(wx.Frame):

    def __init__(self, parent, id):

        wx.Frame.__init__(self, parent, id)
        self.panel = wx.Panel(self, wx.ID_ANY)
        self.SetTitle('Microanalysis')

        # add menubar
        self.menubar = menubar_view()
        self.SetMenuBar(self.menubar)

        #add toolbar
        self.toolbar = toolbar_view()

在我的其他文件 (microanalysis_menubar_view) 我有这个:

class TBar(wx.ToolBar):

    def __init__(self):

        wx.ToolBar.__init__(self)

        toolbar = self.CreateToolBar()
        qtool = toolbar.AddLabelTool(wx.ID_ANY, 'Quit', wx.Bitmap('exit.png'))
        toolbar.Realize()

我得到这个错误:

TypeError:找不到所需的参数“父级”(位置 1)

我也遇到了以这种方式添加菜单栏的问题,但我解决了这个问题。这个比较难。

我尝试将 'toolbar.Realize() 切换到我的主文件:

self.toolbar.Realize(self.toolbar)

这也不起作用。 提前发送

【问题讨论】:

    标签: python class wxpython toolbar


    【解决方案1】:

    wx.ToolBar 对象需要一个父对象作为第一个参数。你没有提供。

    如果你想创建你的工具栏,你需要添加父对象。因此,您创建工具栏 init 函数的调用将像这样开始:

    def __init__(self, parent):
    
        wx.ToolBar.__init__(self, parent)
    

    要创建工具栏本身,您需要调用

    #add toolbar
    self.toolbar = toolbar_view(self)
    

    这样您将自己作为父参数移交给 wx.ToolBar 对象作为父参数。

    希望这会有所帮助。 迈克尔

    【讨论】:

    • 感谢您的帮助。我认为它有帮助,但我无法测试它,因为现在我遇到了另一个错误: AttributeError: 'TBar' object has no attribute 'CreateToolBar' 。我想我不能在自定义类中使用'createToolBar'?
    • CreateToolBar 是一种创建标准工具栏的框架方法。使用框架的 SetToolBar 方法将用户定义的工具栏实例添加到框架中。
    猜你喜欢
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2019-03-05
    相关资源
    最近更新 更多