Если вы хотите установить для полноэкранного атрибута значение True, это так же просто, как:
root = Tk()
root.attributes('-fullscreen', True)
Однако, он не показывает строку заголовка. Если вы хотите, чтобы он был видимым, вы можете изменить размер элемента Tk с помощью метода geometry()
:
root = Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.geometry("%dx%d+0+0" % (w, h))
С помощью winfo_width()
и winfo_height()
вы можете получить ширину и высоту или окно, и также вы можете привязать обработчик события к событию <Configure>
:
def resize(event):
print("New size is: {}x{}".format(event.width, event.height))
root.bind("<Configure>", resize)
Вы можете использовать экземпляры объектов, а не классы. Если вам нужен глобальный символ, вы можете использовать глобальную переменную. Поскольку в PHP они довольно громоздки, можно обернуть их функцией. Например: [
class ClassA {
function call() {
return $this->inner();
}
function inner() {
return "Class A";
}
}
function ClassA() {
static $instance;
return $instance ? $instance : new ClassA();
}
class ClassB extends ClassA {
function inner() {
return "Class B";
}
}
function ClassB() {
static $instance;
return $instance ? $instance : new ClassB();
}
echo "<p>Class A = " . ClassA()->call();
echo "<p>Class B = " . ClassB()->call();
] Но лучше вообще отказаться от глобальных символов; Причина, по которой он хорошо работает в Ruby / Rails, заключается в том, что Ruby на самом деле не имеет статического состояния, в отличие от PHP. Класс может быть повторно привязан и добавлен во время выполнения, что позволяет легко расширять структуру. В PHP классы всегда являются окончательными, поэтому обращение к ним в коде приложения является очень сильной степенью связи.
К сожалению, нет хорошего способа сделать это (иначе PHP-программисты не стали бы так радоваться этой функции).
Вы должны передать имя класса. PHP <5.3 также не имеет красивого синтаксиса для статических вызовов с динамическим именем класса, что делает все еще более уродливым:
static function call($class)
{
return call_user_func(array($class,"inner"));
}
…
ClassA::call("ClassA");
ClassB::call("ClassB");
Если вы можете изменить код (и не использовать static
), то синглтоны сделают это терпимее. Вы можете создать вспомогательную функцию , чтобы упростить синтаксис:
X("ClassA")->call();
X("ClassB")->call();
Функция X должна искать, создавать и возвращать экземпляр класса.
Если производительность не является проблемой, вы можете использовать debug_backtrace (), чтобы найти вызываемый класс:
$bt = debug_backtrace();
return get_class($bt[1]['object']);