本文介绍了wx 导入错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试运行此代码.以前,它给出了 No module wx 作为错误.然后我下载了 wx 模块,现在它给出了这个错误:

I am trying to run this code. Previously, it was giving No module wx as an error. Then I downloaded the wx module and now it is giving this error:

Traceback (most recent call last):
File "C:\Python24\player.py", line 2, in -toplevel-
import wx
File "C:\Python24\wx__init__.py", line 45, in -toplevel-
from wxPython import wx
File "C:\Python24\wxPython__init__.py", line 20, in -toplevel-
import wxc
ImportError: DLL load failed: The specified module could not be found.

这是我的代码:

import os
import wx
import wx.media
import wx.lib.buttons as buttons

dirName = os.path.dirname(os.path.abspath(__file__))
bitmapDir = os.path.join(dirName, 'bitmaps')

########################################################################
class MediaPanel(wx.Panel):
""""""

#----------------------------------------------------------------------
def __init__(self, parent):
    """Constructor"""
    wx.Panel.__init__(self, parent=parent)

    self.frame = parent
    self.currentVolume = 50
    self.createMenu()
    self.layoutControls()

    sp = wx.StandardPaths.Get()
    self.currentFolder = sp.GetDocumentsDir()

    self.timer = wx.Timer(self)
    self.Bind(wx.EVT_TIMER, self.onTimer)
    self.timer.Start(100)

#----------------------------------------------------------------------
def layoutControls(self):
    """
    Create and layout the widgets
    """

    try:
        self.mediaPlayer = wx.media.MediaCtrl(self, style=wx.SIMPLE_BORDER)
    except NotImplementedError:
        self.Destroy()
        raise

    # create playback slider
    self.playbackSlider = wx.Slider(self, size=wx.DefaultSize)
    self.Bind(wx.EVT_SLIDER, self.onSeek, self.playbackSlider)

    self.volumeCtrl = wx.Slider(self, style=wx.SL_VERTICAL|wx.SL_INVERSE)
    self.volumeCtrl.SetRange(0, 100)
    self.volumeCtrl.SetValue(self.currentVolume)
    self.volumeCtrl.Bind(wx.EVT_SLIDER, self.onSetVolume)

    # Create sizers
    mainSizer = wx.BoxSizer(wx.VERTICAL)
    hSizer = wx.BoxSizer(wx.HORIZONTAL)
    audioSizer = self.buildAudioBar()

    # layout widgets
    mainSizer.Add(self.playbackSlider, 1, wx.ALL|wx.EXPAND, 5)
    hSizer.Add(audioSizer, 0, wx.ALL|wx.CENTER, 5)
    hSizer.Add(self.volumeCtrl, 0, wx.ALL, 5)
    mainSizer.Add(hSizer)

    self.SetSizer(mainSizer)
    self.Layout()

#----------------------------------------------------------------------
def buildAudioBar(self):
    """
    Builds the audio bar controls
    """
    audioBarSizer = wx.BoxSizer(wx.HORIZONTAL)

    self.buildBtn({'bitmap':'player_prev.png', 'handler':self.onPrev,
                   'name':'prev'},
                  audioBarSizer)

    # create play/pause toggle button
    img = wx.Bitmap(os.path.join(bitmapDir, "player_play.png"))
    self.playPauseBtn = buttons.GenBitmapToggleButton(self, bitmap=img, name="play")
    self.playPauseBtn.Enable(False)

    img = wx.Bitmap(os.path.join(bitmapDir, "player_pause.png"))
    self.playPauseBtn.SetBitmapSelected(img)
    self.playPauseBtn.SetInitialSize()

    self.playPauseBtn.Bind(wx.EVT_BUTTON, self.onPlay)
    audioBarSizer.Add(self.playPauseBtn, 0, wx.LEFT, 3)

    btnData = [{'bitmap':'player_stop.png',
                'handler':self.onStop, 'name':'stop'},
                {'bitmap':'player_next.png',
                 'handler':self.onNext, 'name':'next'}]
    for btn in btnData:
        self.buildBtn(btn, audioBarSizer)

    return audioBarSizer

#----------------------------------------------------------------------
def buildBtn(self, btnDict, sizer):
    """"""
    bmp = btnDict['bitmap']
    handler = btnDict['handler']

    img = wx.Bitmap(os.path.join(bitmapDir, bmp))
    btn = buttons.GenBitmapButton(self, bitmap=img, name=btnDict['name'])
    btn.SetInitialSize()
    btn.Bind(wx.EVT_BUTTON, handler)
    sizer.Add(btn, 0, wx.LEFT, 3)

#----------------------------------------------------------------------
def createMenu(self):
    """
    Creates a menu
    """
    menubar = wx.MenuBar()

    fileMenu = wx.Menu()
    open_file_menu_item = fileMenu.Append(wx.NewId(), "&Open", "Open a File")
    menubar.Append(fileMenu, '&File')
    self.frame.SetMenuBar(menubar)
    self.frame.Bind(wx.EVT_MENU, self.onBrowse, open_file_menu_item)

#----------------------------------------------------------------------
def loadMusic(self, musicFile):
    """
    Load the music into the MediaCtrl or display an error dialog
    if the user tries to load an unsupported file type
    """
    if not self.mediaPlayer.Load(musicFile):
        wx.MessageBox("Unable to load %s: Unsupported format?" % path,
                      "ERROR",
                      wx.ICON_ERROR | wx.OK)
    else:
        self.mediaPlayer.SetInitialSize()
        self.GetSizer().Layout()
        self.playbackSlider.SetRange(0, self.mediaPlayer.Length())
        self.playPauseBtn.Enable(True)

#----------------------------------------------------------------------
def onBrowse(self, event):
    """
    Opens file dialog to browse for music
    """
    wildcard = "MP3 (*.mp3)|*.mp3|"     \
               "WAV (*.wav)|*.wav"
    dlg = wx.FileDialog(
        self, message="Choose a file",
        defaultDir=self.currentFolder,
        defaultFile="",
        wildcard=wildcard,
        style=wx.OPEN | wx.CHANGE_DIR
        )
    if dlg.ShowModal() == wx.ID_OK:
        path = dlg.GetPath()
        self.currentFolder = os.path.dirname(path)
        self.loadMusic(path)
    dlg.Destroy()

#----------------------------------------------------------------------
def onNext(self, event):
    """
    Not implemented!
    """
    pass

#----------------------------------------------------------------------
def onPause(self):
    """
    Pauses the music
    """
    self.mediaPlayer.Pause()

#----------------------------------------------------------------------
def onPlay(self, event):
    """
    Plays the music
    """
    if not event.GetIsDown():
        self.onPause()
        return

    if not self.mediaPlayer.Play():
        wx.MessageBox("Unable to Play media : Unsupported format?",
                      "ERROR",
                      wx.ICON_ERROR | wx.OK)
    else:
        self.mediaPlayer.SetInitialSize()
        self.GetSizer().Layout()
        self.playbackSlider.SetRange(0, self.mediaPlayer.Length())

    event.Skip()

#----------------------------------------------------------------------
def onPrev(self, event):
    """
    Not implemented!
    """
    pass

#----------------------------------------------------------------------
def onSeek(self, event):
    """
    Seeks the media file according to the amount the slider has
    been adjusted.
    """
    offset = self.playbackSlider.GetValue()
    self.mediaPlayer.Seek(offset)

#----------------------------------------------------------------------
def onSetVolume(self, event):
    """
    Sets the volume of the music player
    """
    self.currentVolume = self.volumeCtrl.GetValue()
    print "setting volume to: %s" % int(self.currentVolume)
    self.mediaPlayer.SetVolume(self.currentVolume)

#----------------------------------------------------------------------
def onStop(self, event):
    """
    Stops the music and resets the play button
    """
    self.mediaPlayer.Stop()
    self.playPauseBtn.SetToggle(False)

#----------------------------------------------------------------------
def onTimer(self, event):
    """
    Keeps the player slider updated
    """
    offset = self.mediaPlayer.Tell()
    self.playbackSlider.SetValue(offset)

########################################################################
class MediaFrame(wx.Frame):

#----------------------------------------------------------------------
def __init__(self):
    wx.Frame.__init__(self, None, wx.ID_ANY, "Python Music Player")
    panel = MediaPanel(self)

#----------------------------------------------------------------------
# Run the program
if __name__ == "__main__":
app = wx.App(False)
frame = MediaFrame()
frame.Show()
app.MainLoop()

可能是我没有正确安装wx.我使用的是 Python 2.4,但找不到 Python 2.4 的 wx 模块.我下载了 Python 2.5 的 wx 并将 wx 文件夹粘贴到 Python 2.4 目录中.你能指导我如何在 Python 2.4 中添加 wx 模块吗?

It may be that I didn't install wx correctly. I am using Python 2.4 and I was unable to find the wx module for Python 2.4. I downloaded wx for Python 2.5 and pasted the wx folder into the Python 2.4 directory. Can you please guide me how to add the wx module in Python 2.4?

推荐答案

检查这里.

2.8.10 版本仍然有 2.4 的二进制安装程序

The 2.8.10 version still has binary installers for 2.4

这篇关于wx 导入错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 20:14