代码之家  ›  专栏  ›  技术社区  ›  Netanel

音频部分。因为某种原因被覆盖的文件?

  •  0
  • Netanel  · 技术社区  · 7 年前

    我在程序中使用函数AudioSegment。从_文件: sound = AudioSegment.from_file(audio_path, format="m4a")

    我还实现了我创建的一个文件: import GUI_log

    在这个文件中,我有下一个类:

    class TextHandler(logging.Handler):
        """This class allows you to log to a Tkinter scroll_text or Scrolledscroll_text widget"""
        def __init__(self, scroll_text):
            # run the regular Handler __init__
            logging.Handler.__init__(self)
    
            # Store a reference to the scroll_text it will log to
            self.scroll_text = scroll_text
    
        def emit(self, record):
            msg = self.format(record)
            tag = ""
            if record.levelno == ACTION:
                tag = "ACTION"
            def append():
                self.scroll_text.configure(state='normal')
                self.scroll_text.insert(Tkinter.END, msg + '\n', tag)
                self.scroll_text.configure(state='disabled')
                # Autoscroll to the bottom
                self.scroll_text.yview(Tkinter.END)     
            # This is necessary because we can't modify the scroll_text from other threads
            self.scroll_text.after(0, append)
    

    出于某种原因,当我执行我提到的第一行(带有 from_file ),这个 emit TextHandler 类被执行。

    有人知道它的原因是什么,以及如何修复它吗?

    编辑:我发现我覆盖了代码中的某个地方:

    # Create Tkinter object and ScrolledText
        root =Tkinter.Tk()
        st = ScrolledText.ScrolledText(root, state='disabled')
        st.configure(font='TkFixedFont')
        st.pack()
        st.tag_config("ACTION", foreground="dark green")
    
        # Create text handler
        text_handler = TextHandler(st)
        formatter = logging.Formatter('%(asctime)s    IP: %(IP)-15s PORT: %(PORT)-5s    MESSAGE: %(message)s', datefmt='%Y-%m-%d,%H:%M:%S') #.%(msecs)03d
        text_handler.setFormatter(formatter)
    
        # Add action level
        logging.addLevelName(ACTION, "ACTION")
        def action(self, message, *args, **kws):
            self._log(ACTION, message, args, **kws) 
        logging.Logger.action = action
    
        # Create logger
        logger = logging.getLogger()
        logger.addHandler(text_handler)
        logger.setLevel(logging.DEBUG)
    
        return (root, logger)
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Netanel    7 年前

    在互联网上滚动一段时间后,我发现pydub使用日志记录,我可能会覆盖日志记录。为了解决这个问题,我改变了这一行: logger = logging.getLogger() logger = logging.getLogger("SOMENAME")

    推荐文章