Я столкнулся с этой ошибкой во время написания моего приложения. Короче говоря, размер окна приложения фиксирован, что плохо работает с меньшими экранами, например, в нетбуках.
В этих нижних кнопках находятся пределы экрана и не могут использоваться. Я хотел бы принять это во внимание в пользовательском интерфейсе, но прежде всего, я хотел бы узнать, какой стандартный способ определить размер экрана в GTK, если он есть.
У кого-нибудь есть идеи о том, как это сделать?
Я бы сказал, что вы хотите ответить на следующий вопрос:
Насколько велика будет окно, если оно было максимизировано?
Потому что рядом с несколькими настройками экрана есть также другие проблемы, такие как размер верхней панели, нижние панели (уже не в Ubuntu, но, возможно, другие дистрибутивы), декораторы окон, ... На самом деле это не обрабатывается Gtk, а диспетчером окон. Поэтому я не вижу никакого способа получить этот номер, если вы не дадите windowmanager действительно сделать максимизацию.
Поэтому ответ на этот вопрос прост:
from gi.repository import Gtk, GObject
w = Gtk.Window()
w.maximize()
def p():
print w.get_size()
GObject.timeout_add(1000, p)
w.show()
Gtk.main()
Итак, вы может создать окно, максимизировать его, а затем начать заполнять его видными размерами.
from gi.repository import Gdk
s = Gdk.Screen.get_default()
print s.get_width(), s.get_height()
Конечно, если у вас несколько экранов, это дает размер прямоугольника, охватывающего их обоих. Этот материал сложнее, чем кажется, в мире с несколькими экранами в нем ...
Вот что я придумал:
from gi.repository import Gdk, Gtk
# Replace w with the GtkWindow of your application
w = Gtk.Window()
# Get the screen from the GtkWindow
s = w.get_screen()
# Using the screen of the Window, the monitor it's on can be identified
m = s.get_monitor_at_window(s.get_active_window())
# Then get the geometry of that monitor
monitor = s.get_monitor_geometry(m)
# This is an example output
print("Heigh: %s, Width: %s" % (monitor.height, monitor.width))
Я не уверен, что это будет называться «стандартным», но я надеюсь, что это поможет.
from gi.repository import Gdk
s = Gdk.Screen.get_default()
print s.get_width(), s.get_height()
Конечно, если у вас несколько экранов, это дает размер прямоугольника, охватывающего их обоих. Этот материал сложнее, чем кажется, в мире с несколькими экранами в нем ...
Я бы сказал, что вы хотите ответить на следующий вопрос:
Насколько велика будет окно, если оно было максимизировано?
Потому что рядом с несколькими настройками экрана есть также другие проблемы, такие как размер верхней панели, нижние панели (уже не в Ubuntu, но, возможно, другие дистрибутивы), декораторы окон, ... На самом деле это не обрабатывается Gtk, а диспетчером окон. Поэтому я не вижу никакого способа получить этот номер, если вы не дадите windowmanager действительно сделать максимизацию.
Поэтому ответ на этот вопрос прост:
from gi.repository import Gtk, GObject
w = Gtk.Window()
w.maximize()
def p():
print w.get_size()
GObject.timeout_add(1000, p)
w.show()
Gtk.main()
Итак, вы может создать окно, максимизировать его, а затем начать заполнять его видными размерами.
Вот что я придумал:
from gi.repository import Gdk, Gtk
# Replace w with the GtkWindow of your application
w = Gtk.Window()
# Get the screen from the GtkWindow
s = w.get_screen()
# Using the screen of the Window, the monitor it's on can be identified
m = s.get_monitor_at_window(s.get_active_window())
# Then get the geometry of that monitor
monitor = s.get_monitor_geometry(m)
# This is an example output
print("Heigh: %s, Width: %s" % (monitor.height, monitor.width))
Я не уверен, что это будет называться «стандартным», но я надеюсь, что это поможет.
Я бы сказал, что вы хотите ответить на следующий вопрос:
Насколько велика будет окно, если оно было максимизировано?
Потому что рядом с несколькими настройками экрана есть также другие проблемы, такие как размер верхней панели, нижние панели (уже не в Ubuntu, но, возможно, другие дистрибутивы), декораторы окон, ... На самом деле это не обрабатывается Gtk, а диспетчером окон. Поэтому я не вижу никакого способа получить этот номер, если вы не дадите windowmanager действительно сделать максимизацию.
Поэтому ответ на этот вопрос прост:
from gi.repository import Gtk, GObject
w = Gtk.Window()
w.maximize()
def p():
print w.get_size()
GObject.timeout_add(1000, p)
w.show()
Gtk.main()
Итак, вы может создать окно, максимизировать его, а затем начать заполнять его видными размерами.
Вот что я придумал:
from gi.repository import Gdk, Gtk
# Replace w with the GtkWindow of your application
w = Gtk.Window()
# Get the screen from the GtkWindow
s = w.get_screen()
# Using the screen of the Window, the monitor it's on can be identified
m = s.get_monitor_at_window(s.get_active_window())
# Then get the geometry of that monitor
monitor = s.get_monitor_geometry(m)
# This is an example output
print("Heigh: %s, Width: %s" % (monitor.height, monitor.width))
Я не уверен, что это будет называться «стандартным», но я надеюсь, что это поможет.
from gi.repository import Gdk
s = Gdk.Screen.get_default()
print s.get_width(), s.get_height()
Конечно, если у вас несколько экранов, это дает размер прямоугольника, охватывающего их обоих. Этот материал сложнее, чем кажется, в мире с несколькими экранами в нем ...
from gi.repository import Gdk
s = Gdk.Screen.get_default()
print s.get_width(), s.get_height()
Конечно, если у вас несколько экранов, это дает размер прямоугольника, охватывающего их обоих. Этот материал сложнее, чем кажется, в мире с несколькими экранами в нем ...
Я бы сказал, что вы хотите ответить на следующий вопрос:
Насколько велика будет окно, если оно было максимизировано?
Потому что рядом с несколькими настройками экрана есть также другие проблемы, такие как размер верхней панели, нижние панели (уже не в Ubuntu, но, возможно, другие дистрибутивы), декораторы окон, ... На самом деле это не обрабатывается Gtk, а диспетчером окон. Поэтому я не вижу никакого способа получить этот номер, если вы не дадите windowmanager действительно сделать максимизацию.
Поэтому ответ на этот вопрос прост:
from gi.repository import Gtk, GObject
w = Gtk.Window()
w.maximize()
def p():
print w.get_size()
GObject.timeout_add(1000, p)
w.show()
Gtk.main()
Итак, вы может создать окно, максимизировать его, а затем начать заполнять его видными размерами.
Вот что я придумал:
from gi.repository import Gdk, Gtk
# Replace w with the GtkWindow of your application
w = Gtk.Window()
# Get the screen from the GtkWindow
s = w.get_screen()
# Using the screen of the Window, the monitor it's on can be identified
m = s.get_monitor_at_window(s.get_active_window())
# Then get the geometry of that monitor
monitor = s.get_monitor_geometry(m)
# This is an example output
print("Heigh: %s, Width: %s" % (monitor.height, monitor.width))
Я не уверен, что это будет называться «стандартным», но я надеюсь, что это поможет.
Вот что я придумал:
from gi.repository import Gdk, Gtk
# Replace w with the GtkWindow of your application
w = Gtk.Window()
# Get the screen from the GtkWindow
s = w.get_screen()
# Using the screen of the Window, the monitor it's on can be identified
m = s.get_monitor_at_window(s.get_active_window())
# Then get the geometry of that monitor
monitor = s.get_monitor_geometry(m)
# This is an example output
print("Heigh: %s, Width: %s" % (monitor.height, monitor.width))
Я не уверен, что это будет называться «стандартным», но я надеюсь, что это поможет.
from gi.repository import Gdk
s = Gdk.Screen.get_default()
print s.get_width(), s.get_height()
Конечно, если у вас несколько экранов, это дает размер прямоугольника, охватывающего их обоих. Этот материал сложнее, чем кажется, в мире с несколькими экранами в нем ...
Я бы сказал, что вы хотите ответить на следующий вопрос:
Насколько велика будет окно, если оно было максимизировано?
Потому что рядом с несколькими настройками экрана есть также другие проблемы, такие как размер верхней панели, нижние панели (уже не в Ubuntu, но, возможно, другие дистрибутивы), декораторы окон, ... На самом деле это не обрабатывается Gtk, а диспетчером окон. Поэтому я не вижу никакого способа получить этот номер, если вы не дадите windowmanager действительно сделать максимизацию.
Поэтому ответ на этот вопрос прост:
from gi.repository import Gtk, GObject
w = Gtk.Window()
w.maximize()
def p():
print w.get_size()
GObject.timeout_add(1000, p)
w.show()
Gtk.main()
Итак, вы может создать окно, максимизировать его, а затем начать заполнять его видными размерами.
Я бы сказал, что вы хотите ответить на следующий вопрос:
Насколько велика будет окно, если оно было максимизировано?
Потому что рядом с несколькими настройками экрана есть также другие проблемы, такие как размер верхней панели, нижние панели (уже не в Ubuntu, но, возможно, другие дистрибутивы), декораторы окон, ... На самом деле это не обрабатывается Gtk, а диспетчером окон. Поэтому я не вижу никакого способа получить этот номер, если вы не дадите windowmanager действительно сделать максимизацию.
Поэтому ответ на этот вопрос прост:
from gi.repository import Gtk, GObject
w = Gtk.Window()
w.maximize()
def p():
print w.get_size()
GObject.timeout_add(1000, p)
w.show()
Gtk.main()
Итак, вы может создать окно, максимизировать его, а затем начать заполнять его видными размерами.
from gi.repository import Gdk
s = Gdk.Screen.get_default()
print s.get_width(), s.get_height()
Конечно, если у вас несколько экранов, это дает размер прямоугольника, охватывающего их обоих. Этот материал сложнее, чем кажется, в мире с несколькими экранами в нем ...
Вот что я придумал:
from gi.repository import Gdk, Gtk
# Replace w with the GtkWindow of your application
w = Gtk.Window()
# Get the screen from the GtkWindow
s = w.get_screen()
# Using the screen of the Window, the monitor it's on can be identified
m = s.get_monitor_at_window(s.get_active_window())
# Then get the geometry of that monitor
monitor = s.get_monitor_geometry(m)
# This is an example output
print("Heigh: %s, Width: %s" % (monitor.height, monitor.width))
Я не уверен, что это будет называться «стандартным», но я надеюсь, что это поможет.
from gi.repository import Gdk
s = Gdk.Screen.get_default()
print s.get_width(), s.get_height()
Конечно, если у вас несколько экранов, это дает размер прямоугольника, охватывающего их обоих. Этот материал сложнее, чем кажется, в мире с несколькими экранами в нем ...
Вот что я придумал:
from gi.repository import Gdk, Gtk
# Replace w with the GtkWindow of your application
w = Gtk.Window()
# Get the screen from the GtkWindow
s = w.get_screen()
# Using the screen of the Window, the monitor it's on can be identified
m = s.get_monitor_at_window(s.get_active_window())
# Then get the geometry of that monitor
monitor = s.get_monitor_geometry(m)
# This is an example output
print("Heigh: %s, Width: %s" % (monitor.height, monitor.width))
Я не уверен, что это будет называться «стандартным», но я надеюсь, что это поможет.
Я бы сказал, что вы хотите ответить на следующий вопрос:
Насколько велика будет окно, если оно было максимизировано?
Потому что рядом с несколькими настройками экрана есть также другие проблемы, такие как размер верхней панели, нижние панели (уже не в Ubuntu, но, возможно, другие дистрибутивы), декораторы окон, ... На самом деле это не обрабатывается Gtk, а диспетчером окон. Поэтому я не вижу никакого способа получить этот номер, если вы не дадите windowmanager действительно сделать максимизацию.
Поэтому ответ на этот вопрос прост:
from gi.repository import Gtk, GObject
w = Gtk.Window()
w.maximize()
def p():
print w.get_size()
GObject.timeout_add(1000, p)
w.show()
Gtk.main()
Итак, вы может создать окно, максимизировать его, а затем начать заполнять его видными размерами.
from gi.repository import Gdk
s = Gdk.Screen.get_default()
print s.get_width(), s.get_height()
Конечно, если у вас несколько экранов, это дает размер прямоугольника, охватывающего их обоих. Этот материал сложнее, чем кажется, в мире с несколькими экранами в нем ...
Вот что я придумал:
from gi.repository import Gdk, Gtk
# Replace w with the GtkWindow of your application
w = Gtk.Window()
# Get the screen from the GtkWindow
s = w.get_screen()
# Using the screen of the Window, the monitor it's on can be identified
m = s.get_monitor_at_window(s.get_active_window())
# Then get the geometry of that monitor
monitor = s.get_monitor_geometry(m)
# This is an example output
print("Heigh: %s, Width: %s" % (monitor.height, monitor.width))
Я не уверен, что это будет называться «стандартным», но я надеюсь, что это поможет.
Я бы сказал, что вы хотите ответить на следующий вопрос:
Насколько велика будет окно, если оно было максимизировано?
Потому что рядом с несколькими настройками экрана есть также другие проблемы, такие как размер верхней панели, нижние панели (уже не в Ubuntu, но, возможно, другие дистрибутивы), декораторы окон, ... На самом деле это не обрабатывается Gtk, а диспетчером окон. Поэтому я не вижу никакого способа получить этот номер, если вы не дадите windowmanager действительно сделать максимизацию.
Поэтому ответ на этот вопрос прост:
from gi.repository import Gtk, GObject
w = Gtk.Window()
w.maximize()
def p():
print w.get_size()
GObject.timeout_add(1000, p)
w.show()
Gtk.main()
Итак, вы может создать окно, максимизировать его, а затем начать заполнять его видными размерами.
from gi.repository import Gdk
s = Gdk.Screen.get_default()
print s.get_width(), s.get_height()
Конечно, если у вас несколько экранов, это дает размер прямоугольника, охватывающего их обоих. Этот материал сложнее, чем кажется, в мире с несколькими экранами в нем ...
Вот что я придумал:
from gi.repository import Gdk, Gtk
# Replace w with the GtkWindow of your application
w = Gtk.Window()
# Get the screen from the GtkWindow
s = w.get_screen()
# Using the screen of the Window, the monitor it's on can be identified
m = s.get_monitor_at_window(s.get_active_window())
# Then get the geometry of that monitor
monitor = s.get_monitor_geometry(m)
# This is an example output
print("Heigh: %s, Width: %s" % (monitor.height, monitor.width))
Я не уверен, что это будет называться «стандартным», но я надеюсь, что это поможет.