如何用if设置true / false变量?

时间:2011-08-22 22:07:51

标签: python windows

这有点难以解释,但我会尽我所能。

我的代码中有这部分

def hideConsole():
    hideConsole = win32console.GetConsoleWindow()
    win32gui.ShowWindow(hideConsole, 0)

隐藏了控制台,我有这个部分来启用它

def onKeyboardEvent(event):
    if event.KeyID == 192 and event.Alt == 32:
        hideConsole()
    return True

如何制作一个“系统”,当我按下组合键一次,控制台隐藏时,下一次,控制台会出现? (更改hideConsole,1值)

5 个答案:

答案 0 :(得分:1)

使用布尔变量,如下所示:

class Console(object):
    def __init__(self):
        self.is_hidden = False
        self.handle    = win32console.GetConsoleWindow()

    def toggle(self):
        win32gui.ShowWindow(self.handle, 1 if self.is_hidden else 0)
        self.is_hidden = not self.is_hidden

答案 1 :(得分:1)

您可以使用在每次调用时在true和false之间切换的函数属性:

def toggleConsole():
    toggleConsole.show = not getattr(toggleConsole, "show", True)
    console = win32console.GetConsoleWindow()
    win32gui.ShowWindow(console, int(toggleConsole.show))

以下是一个如何运作的简单示例:

>>> def test():
...     test.show = not getattr(test, "show", True)
...     print int(test.show)
... 
>>> test()
0
>>> test()
1
>>> test()
0

答案 2 :(得分:0)

您可以使用初始值为0的状态变量hideValue,并为每个键盘事件执行:

hideValue = 1 - hideValue

这会将hideValue在0和1之间切换。

然后你可以拨打win32gui.ShowWindow(hideConsole, hideValue)

答案 3 :(得分:0)

你需要以某种方式维持状态:

hidden = False

def toggleConsoleVisibility():
    global hidden

    hideConsole = win32console.GetConsoleWindow()
    win32gui.ShowWindow(hideConsole, 1 if hidden else 0)
    hidden = not hidden

def onKeyboardEvent(event):
    if event.KeyID == 192 and event.Alt == 32:
        toggleConsoleVisibility()
    return True

如果可能,请将此作为课程的一部分。然后,您可以保留由类封装的hidden变量,而不是在全局命名空间中浮动。

答案 4 :(得分:0)

con_visible = True

def setVisibility(visible):
    global con_visible
    hideConsole = win32console.GetConsoleWindow()
    win32gui.ShowWindow(hideConsole, int(visible))
    con_visible = bool(visible)

def onKeyboardEvent(event):
    if event.KeyID == 192 and event.Alt == 32:
        if con_visible:
            setVisibility(False)
        else:
            setVisibility(True)
    return True

如果控制台在内部保持其可见性状态,您最好使用它而不是全局变量。