私はPythonの新機能ですが、wxpythonを使用したGUIの使用方法を理解したいと思います。私はフレームの作成のためにテンプレートを使用しており、メニューを追加しました。メニューは表示されますが、アクションを引き起こさないので、作成した別のメニュー項目にアクションをバインドする必要があります。問題は、私はどのようにわからない。バインドメニューイベントwxpython
私はメニューを始め、私が使用してアクションを関連付けられている私は「menu_open」と方法
filemenu.Append(wx.ID_OPEN, "Open")
に関連すると呼ばれ、保存:
self.Bind(wx.EVT_MENU, self.Open, menu_open)
をしかし、私はエラーを得た:
AttributeError: 'MainWindow' object has no attribute 'Open'
「OnOpen」属性があるので試してみるとエラーが表示されます:
frame = MainWindow(None, "Sample editor")
AttributeError: 'MainWindow'object has no attribute 'OnOpen'
だから、質問は以下のとおりです。
- はself.Bind構文が正しいとメニューにアクションを割り当てるための正しい方法ですか?
- wxPythonで利用できるメニューの属性の完全なリストはありますか?
参考用にコード全体を報告しています。ありがとう。 G.
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import print_function
import wx
class MainWindow(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title, size=(200, 100))
self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE)
# A Statusbar in the bottom of the window
self.CreateStatusBar()
# Setting up the menus
'''Define main items'''
filemenu = wx.Menu()
editmenu = wx.Menu()
infomenu = wx.Menu()
'''Items'''
# file menu
menu_open = filemenu.Append(wx.ID_OPEN, "Open")
filemenu.Append(wx.ID_NEW, "New")
filemenu.Append(wx.ID_SAVE, "Save")
filemenu.Append(wx.ID_SAVEAS, "Save as")
filemenu.Append(wx.ID_EXIT, "Exit")
filemenu.AppendSeparator()
filemenu.Append(wx.ID_PRINT, "&Print")
filemenu.Append(wx.ID_PRINT_SETUP, "Print setup")
filemenu.Append(wx.ID_PREVIEW, "Preview")
# edit menu
editmenu.Append(wx.ID_COPY, "Copy")
editmenu.Append(wx.ID_CUT, "Cut")
editmenu.Append(wx.ID_PASTE, "Paste")
editmenu.AppendSeparator()
editmenu.Append(wx.ID_UNDO, "Undo")
editmenu.Append(wx.ID_REDO, "Re-do it")
# info menu
infomenu.Append(wx.ID_ABOUT, "About")
'''Bind items for activation'''
# bind file menu
self.Bind(wx.EVT_MENU, self.OnOpen, menu_open)
# Creating the menubar.
menuBar = wx.MenuBar()
# Add menus
menuBar.Append(filemenu, "&File")
menuBar.Append(editmenu, "&Edit")
menuBar.Append(infomenu, "&Help")
# Adding the MenuBar to the Frame content.
self.SetMenuBar(menuBar)
self.Show(True)
app = wx.App(False)
frame = MainWindow(None, "Sample editor")
app.MainLoop()
呼び出されるメソッドがクラスに追加必要'onOpen'などはwx.MENUから派生した標準的なメソッドなので、私はメソッドの完全なリストを探していました... – Gigiux
'wx.Frame'のような様々なウィジェットの標準的なメソッドがいくつかありますが、メニューイベントに自動的にマップする –
オープン、セーブ、別名で保存、新規作成などの標準メニュー項目に必要なアクションのコードを入手するためのリストがありますか? – Gigiux