为什么我不能在另一个python文件中调用func?

时间:2014-08-09 15:52:45

标签: python

我制作了2个python文件:MineSweeping.pyCmdColor.pyMineSweeping.py中,我想调用CmdColor.py中定义的func来使shell具有颜色输出,但是失败了。

CmdColor.py的代码如下:

#!/usr/bin/env python    
#encoding: utf-8  
import ctypes  

STD_INPUT_HANDLE = -10  
STD_OUTPUT_HANDLE= -11
STD_ERROR_HANDLE = -12  

FOREGROUND_BLACK = 0x0  
FOREGROUND_BLUE = 0x01 # text color contains blue.  
FOREGROUND_GREEN= 0x02 # text color contains green.  
FOREGROUND_RED = 0x04 # text color contains red.  
FOREGROUND_INTENSITY = 0x08 # text color is intensified.  

BACKGROUND_BLUE = 0x10 # background color contains blue.  
BACKGROUND_GREEN= 0x20 # background color contains green.  
BACKGROUND_RED = 0x40 # background color contains red.  
BACKGROUND_INTENSITY = 0x80 # background color is intensified.  

class Color:  

    std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)  

    def set_cmd_color(self, color, handle=std_out_handle):  
        """(color) -> bit 
        Example: set_cmd_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY) 
        """  
        bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)  
        return bool  

    def reset_color(self):  
        self.set_cmd_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)  

    def print_red_text(self, print_text):  
        self.set_cmd_color(FOREGROUND_RED | FOREGROUND_INTENSITY)  
        print print_text  
        self.reset_color()  



if __name__ == "__main__":  
    clr = Color()
    clr.print_red_text('red')  
    clr.print_green_text('green')  
    clr.print_blue_text('blue')  
    clr.print_red_text_with_blue_bg('background')  

MineSweeping.py我这样做来调用func:

import CmdColor
...    
    clr = CmdColor.Color()
    clr.print_red_text('red')

但输出字符串' red'是白色的

如果我将CmdColor.py合并到abc.py,那么它可以输出红色字符串' red'。

代码可以在这里找到: https://github.com/tomxuetoy/Python_MineSweeping

为什么呢? 谢谢!

0 个答案:

没有答案