如何用if设置真/假变量?

1 投票
5 回答
2065 浏览
提问于 2025-04-17 00:09

这有点难解释,但我会尽量简单明了。

我在代码中有这一部分

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

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

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这个变量放在类里面,而不是让它在全局范围内到处飘。

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

你可以使用一个函数属性,在每次调用时在真和假之间切换:

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

撰写回答