wxPython:添加一个关于框。

kommander0000

我正在创建一个wxPython音板,想知道如何实现About Box。目的是在wxPython的File菜单上按下About按钮,并生成About Box。

到目前为止,这是我的代码:

import wx
import os
import pygame

 pygame.init()

 ##SOUNDS##
 goliathwav = pygame.mixer.Sound("goliath.wav")
 channelopen = pygame.mixer.Sound("channelopen.wav")
 ##SOUNDS##


class windowClass(wx.Frame):
    def __init__(self, *args, **kwargs):
        super(windowClass,self).__init__(*args,**kwargs)
        self.__basicGUI()
    def __basicGUI(self):
        panel = wx.Panel(self)
        menuBar = wx.MenuBar()
        fileButton = wx.Menu()
        editButton = wx.Menu()
        aboutBox = wx.MessageDialog(None, "Created by      Kommander000(cyrex)")
        answer=aboutBox.ShowModal()
        aboutBox.Destroy()
        aboutButton = wx.Menu()
        exitItem = fileButton.Append(wx.ID_EXIT, 'Exit','status msg...')
        aboutItem = aboutButton.Append(wx.ID_ABOUT, "About")



        menuBar.Append(fileButton, 'File')
        menuBar.Append(editButton, 'Edit')
        menuBar.Append(aboutButton, 'About this program')

        self.SetMenuBar(menuBar)
        self.Bind(wx.EVT_MENU, self.__quit, exitItem)
        self.Bind(wx.EVT_MENU, self.OnMenuHelpAbout, aboutBox)

        self.__sound_dict = { "Goliath" : "goliath.wav",
                              "Goliath2" : "channelopen.wav"
                            }

        self.__sound_list = sorted(self.__sound_dict.keys())

        self.__list = wx.ListBox(panel,pos=(20,20), size=(250,150))
        for i in self.__sound_list:
            self.__list.Append(i)
        self.__list.Bind(wx.EVT_LISTBOX,self.__on_click)

        #wx.TextCtrl(panel,pos=(10,10), size=(250,150))

        self.SetTitle("Soundboard")
       self.Show(True)

    def __on_click(self,event):
        event.Skip()
        name = self.__sound_list[self.__list.GetSelection()]
        filename = self.__sound_dict[name]
        if filename == "goliath.wav":
             print "[ NOW PLAYING ] ... %s" % filename
             pygame.mixer.Sound.play(goliathwav)
        if filename == "channelopen.wav":
            print "[ NOW PLAYING ] ... %s" % filename
            pygame.mixer.Sound.play(channelopen)


    def __quit(self, e):
         self.Close()
def main():
    app = wx.App()
    windowClass(None, -1, style=wx.MAXIMIZE_BOX | wx.CAPTION | wx.CENTRE)
    app.MainLoop()

 main()

这是我收到的错误:

self.Bind(wx.EVT_MENU, self.OnMenuHelpAbout, aboutBox)
AttributeError: 'windowClass' object has no attribute 'OnMenuHelpAbout'

有什么建议么?

一如既往的感谢

kommander000

让·弗朗索瓦·法布尔(Jean-Francois Fabre)

又是你 :)

aboutBox需要在您缺少的回调中创建OnMenuHelpAbout(如我先前的回答所述,我将其重构为私有)

另外(不相关),但我已经更改了字典,因此它直接指向声音对象:不再if/elif,您可以加载200个声音,代码仍将相同。

固定代码:

import wx
import os
import pygame

pygame.init()

 ##SOUNDS##
 ##SOUNDS##


class windowClass(wx.Frame):
    __goliathwav = pygame.mixer.Sound("goliath.wav")
    __channelopen = pygame.mixer.Sound("channelopen.wav")

    def __init__(self, *args, **kwargs):
        super(windowClass,self).__init__(*args,**kwargs)
        self.__basicGUI()
    def __basicGUI(self):
        panel = wx.Panel(self)
        menuBar = wx.MenuBar()
        fileButton = wx.Menu()
        editButton = wx.Menu()
        aboutButton = wx.Menu()
        exitItem = fileButton.Append(wx.ID_EXIT, 'Exit','status msg...')
        aboutItem = aboutButton.Append(wx.ID_ABOUT, "About")



        menuBar.Append(fileButton, 'File')
        menuBar.Append(editButton, 'Edit')
        menuBar.Append(aboutButton, 'About this program')

        self.SetMenuBar(menuBar)
        self.Bind(wx.EVT_MENU, self.__quit, exitItem)
        self.Bind(wx.EVT_MENU, self.__onmenuhelpabout, aboutItem)

        self.__sound_dict = { "Goliath" : self.__goliathwav,
                              "Goliath2" : self.__channelopen
                            }

        self.__sound_list = sorted(self.__sound_dict.keys())

        self.__list = wx.ListBox(panel,pos=(20,20), size=(250,150))
        for i in self.__sound_list:
            self.__list.Append(i)
        self.__list.Bind(wx.EVT_LISTBOX,self.__on_click)

        #wx.TextCtrl(panel,pos=(10,10), size=(250,150))

        self.SetTitle("Soundboard")
        self.Show(True)

    def __onmenuhelpabout(self,event):
        event.Skip()
        aboutBox = wx.MessageDialog(None, "Created by      Kommander000(cyrex)")
        answer=aboutBox.ShowModal()
        aboutBox.Destroy()

    def __on_click(self,event):
        event.Skip()
        name = self.__sound_list[self.__list.GetSelection()]
        sound = self.__sound_dict[name]
        print("[ NOW PLAYING ] ... %s" % name)
        pygame.mixer.Sound.play(sound)


    def __quit(self, e):
         self.Close()
def main():
    app = wx.App()
    windowClass(None, -1, style=wx.MAXIMIZE_BOX | wx.CAPTION | wx.CENTRE)
    app.MainLoop()

main()
    def __quit(self, e):
         self.Close()
def main():
    app = wx.App()
    windowClass(None, -1, style=wx.MAXIMIZE_BOX | wx.CAPTION | wx.CENTRE)
    app.MainLoop()

main()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

wxpython:添加一个Listctrl组

来自分类Dev

Django 添加一个关于页面

来自分类Dev

在地块上添加一个框

来自分类Dev

一个新手有一个关于数据框列名的问题

来自分类Dev

如何使用wxPython构造一个交互式对话框?

来自分类Dev

AngularJS在我的选择框前添加一个选项

来自分类Dev

向数据框的每个元素添加一个整数

来自分类Dev

AngularJS在我的选择框前添加一个选项

来自分类Dev

向数据框的每个元素添加一个整数

来自分类Dev

“关于我”页面,文本和照片并排在一个带边框的框中

来自分类Dev

在一个ajax链式选择框中添加一个日期选择器

来自分类Dev

如何根据点击位置一个接一个地添加一个框?

来自分类Dev

如何从一个数据框向另一数据框添加列?

来自分类Dev

如何从一个组合框向另一个组合框添加值

来自分类Dev

关于一个小程序

来自分类Dev

关于DataReader的一个小困惑

来自分类Dev

关于python keyerror的一个错误

来自分类Dev

将数据框列添加到另一个数据框

来自分类Dev

向列表中的每个数据框添加一个与数据框名称相同的变量

来自分类Dev

根据另一个数据框向熊猫数据框列添加值

来自分类Dev

使用熊猫基于另一个数据框向数据框添加列

来自分类Dev

将数据框列添加到另一个数据框

来自分类Dev

将可拖动框添加到与第一个框相同的div中

来自分类Dev

在另一个数据框的列上匹配一个数据框的列,如果匹配则添加一个新列

来自分类Dev

wxpython拖放一个文件夹,然后将另一个文件夹添加到列表

来自分类Dev

wxpython拖放一个文件夹,然后将另一个文件夹添加到列表

来自分类Dev

将列从一个数据框添加到另一个python pandas

来自分类Dev

扩展一个数据框n次并添加一个列编号,将复制1到n

来自分类Dev

试图在已经有一个项目源的数据网格中添加一个组合框

Related 相关文章

  1. 1

    wxpython:添加一个Listctrl组

  2. 2

    Django 添加一个关于页面

  3. 3

    在地块上添加一个框

  4. 4

    一个新手有一个关于数据框列名的问题

  5. 5

    如何使用wxPython构造一个交互式对话框?

  6. 6

    AngularJS在我的选择框前添加一个选项

  7. 7

    向数据框的每个元素添加一个整数

  8. 8

    AngularJS在我的选择框前添加一个选项

  9. 9

    向数据框的每个元素添加一个整数

  10. 10

    “关于我”页面,文本和照片并排在一个带边框的框中

  11. 11

    在一个ajax链式选择框中添加一个日期选择器

  12. 12

    如何根据点击位置一个接一个地添加一个框?

  13. 13

    如何从一个数据框向另一数据框添加列?

  14. 14

    如何从一个组合框向另一个组合框添加值

  15. 15

    关于一个小程序

  16. 16

    关于DataReader的一个小困惑

  17. 17

    关于python keyerror的一个错误

  18. 18

    将数据框列添加到另一个数据框

  19. 19

    向列表中的每个数据框添加一个与数据框名称相同的变量

  20. 20

    根据另一个数据框向熊猫数据框列添加值

  21. 21

    使用熊猫基于另一个数据框向数据框添加列

  22. 22

    将数据框列添加到另一个数据框

  23. 23

    将可拖动框添加到与第一个框相同的div中

  24. 24

    在另一个数据框的列上匹配一个数据框的列,如果匹配则添加一个新列

  25. 25

    wxpython拖放一个文件夹,然后将另一个文件夹添加到列表

  26. 26

    wxpython拖放一个文件夹,然后将另一个文件夹添加到列表

  27. 27

    将列从一个数据框添加到另一个python pandas

  28. 28

    扩展一个数据框n次并添加一个列编号,将复制1到n

  29. 29

    试图在已经有一个项目源的数据网格中添加一个组合框

热门标签

归档