Найти - Пользователи
Полная версия: Как найти центр экрана?
Начало » Python для новичков » Как найти центр экрана?
1 2 3
PEHDOM
oDoDo
Должен же быть какой то код для определения центра который возможно использовать вне зависимости от ОС?
ну самый простой это использовать ткинтер, так как он входит в стандартную библиотеку Python, шанс что гдето есть пайтон и нет ткинтера стремиться к нулю..(мы говорим про “нормальные” ОСи а не экзотику типа OpenVMS или HP-UX)
 import tkinter
root = tkinter.Tk()
width = root.winfo_screenwidth()
height = root.winfo_screenheight()
doza_and
FishHook
Я уверен, что вопрос ТСа не уходит столь глубоко в философию.

Собственно как раз я и хочу помочь ТС понять что нормальное приложение не должно использовать понятие центр экрана, кроме экзотических крайне редких случаев.

Тут надо не функции советовать, которые конечно существуют, а выяснить а для чего этот центр ему нужен?

Скорее всего ему надо типа “окно максимизировать” при старте приложения. Это элементарно делается но совсем по другому.

oDoDo
Должен же быть какой то код для определения центра
Ответ простой, не должен существовать такой метод. У вас есть окно, в ней канва, на ней и рисуйте. А как это окно расположено на дисплее это не ваше дело, это выбирает пользователь приложения, так принято в большинстве GUI приложений. Если сделаете иначе это вызовет отторжение у пользователей, поскольку они привыкли к другому поведению приложений.

Еще из свежих приколов. В одном из наших приложений под win10 перестает производиться перерисовка цифровых полей если начать демонстрацию экрана в скайпе… Надо разбираться.

Каков реально экран что на нем а что нет и что это довольно тонкая материя.
В windows начиная с восьмерки вы даже не можете быть уверены что после отдачи команды отрисовки что-то на экране поменяется. Например если долго не трогать клавиатуру и мышку драйвер ОС решает что пользователь ушел и перестает обновлять картинку.
xam1816
oDoDo
Должен же быть какой то код для определения центра который возможно использовать вне зависимости от ОС?

А вам это надо?Вне зависимости от вида ОС можно получить информацию о матрице экрана,из дампа который хранится в микросхеме памяти на самой плате этой матрицы.

oDoDo
использовать вне зависимости от ОС
если вы находитесь в ОС вы от нее уже зависите.

Независимо можно взять в руки линейку и померить линейкой
PEHDOM
xam1816
Вне зависимости от вида ОС можно получить информацию о матрице экрана,из дампа который хранится в микросхеме памяти на самой плате этой матрицы.
можно конечно полезть в EDID монитора, там много чего интересного можно наокпать:
https://www.extron.com/article/uedid
Но думаю всеже человек имел ввиду не экран, как таковой, а центр условного “рабочего стола”, в ОС.

doza_and
нормальное приложение не должно использовать понятие центр экрана, кроме экзотических крайне редких случаев.
ну почемуже, вполне нормальный кейс, когда ГУИ приложение при запуске опрашивает систему на предмет выставленого разрешения. Не вижу в этом ничего криминального.
oDoDo
doza_and
Если сделаете иначе это вызовет отторжение у пользователей, поскольку они привыкли к другому поведению приложений.
Допустим я хочу вывести несколько окон(4) чтобы они не пересекались, но не зная того же разрешения экрана я могу расположить их за пределом рабочего стола. Если вести отчет от центра и взять за основу минимальное разрешение, то таких проблем не будет.

xam1816
А вам это надо?Вне зависимости от вида ОС можно получить информацию о матрице экрана,из дампа который хранится в микросхеме памяти на самой плате этой матрицы.
Думаю это не будет лишним, где про это можно почитать?

Rodegast
> Не получилось запустить ваш пример (

Какие были ошибки?

> шанс что гдето есть пайтон и нет ткинтера стремиться к нулю..

Ну например на Debian-е он до устанавливается отдельным пакетом, который обычно никто не ставит
PEHDOM
Rodegast
Ну например на Debian-е он до устанавливается отдельным пакетом, который обычно никто не ставит
Как раз пару месяцев назад ставил последний дебиан на бук (base system+xfce),сейчас проверил и там таки ткинтер откудато взялся, хотя я его не ставил 100%. Хотя вполне возможно, что он туда пролез в виде зависимости к какому-нить другому пакету, который я таки ставил, все уже не упомню, так что настаивать не буду.
AD0DE412
PEHDOM
Хотя вполне возможно, что он туда пролез в виде
IDLE
PEHDOM
AD0DE412
IDLE
неа, вот его как раз нету “изкаробки” в дебиане…
py.user.next
oDoDo
AD0DE412
это оs зависимая функция
И что делать? Центр то как тогда найти?
Как то же можно узнать размер дисплея?
В разных ОС по разному узнается размер дисплея?
Для каждой операционной системы должен быть свой дистрибутив программы. В каждом из дистрибутивов программы есть кроссплатформенный код, а есть код, индивидуальный для той системы, где он будет запускаться. Все такие места, где код различается, выносятся в отдельные функции, которые потом реализуются абсолютно по-разному. Так же и сам питон сделан. Функция питона open() в Linux реализована совсем не так, как функция питона open() в Windows. Эти системы по-разному файлы открывают, поэтому питон должен по-разному просить эти системы открыть файл. Они только вызываются одинаково (ну, не “одинаково”, а “похоже до такой степени, что это выглядит одинаково”), при этом работают они абсолютно по-разному.

С экраном всё то же самое. Где-то он так сделан, где-то - по-другому. Поэтому и нет одной функции, которая одинаково работает с экраном. Всегда будут какие-то особенности в работе, зависящие от операционной системы.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB