Как установить переменную true / false с помощью if? - PullRequest
1 голос
/ 23 августа 2011

Это довольно сложно объяснить, но я буду стараться изо всех сил.

У меня есть эта часть в моем коде

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 ]

1 голос
/ 23 августа 2011

Вы можете использовать атрибут функции, который вы переключаете между 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
1 голос
/ 23 августа 2011

С логической переменной, что-то вроде этого:

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
0 голосов
/ 23 августа 2011

Вам нужно как-то поддерживать состояние:

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 в инкапсулированном классе, а не плавать в вашем глобальном пространстве имен.

0 голосов
/ 23 августа 2011
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

Если консоль хранит свое состояние видимости внутри, вы можете использовать это вместо глобальной переменной.

0 голосов
/ 23 августа 2011

Вы можете использовать переменную состояния hideValue с начальным значением 0, и для каждого события клавиатуры выполните:

hideValue = 1 - hideValue

Это переключит hideValue между 0 и 1.

Тогда вы можете позвонить win32gui.ShowWindow(hideConsole, hideValue).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...