Вы можете попробовать использовать методы winfo_screenwidth
и winfo_screenheight
, которые возвращают соответственно ширину и высоту (в пикселях) вашего экземпляра Tk
(окно), а с помощью некоторой базовой математики вы можете центрировать свое окно:
import tkinter as tk
from PyQt4 import QtGui # or PySide
def center(toplevel):
toplevel.update_idletasks()
# Tkinter way to find the screen resolution
# screen_width = toplevel.winfo_screenwidth()
# screen_height = toplevel.winfo_screenheight()
# PyQt way to find the screen resolution
app = QtGui.QApplication([])
screen_width = app.desktop().screenGeometry().width()
screen_height = app.desktop().screenGeometry().height()
size = tuple(int(_) for _ in toplevel.geometry().split('+')[0].split('x'))
x = screen_width/2 - size[0]/2
y = screen_height/2 - size[1]/2
toplevel.geometry("+%d+%d" % (x, y))
toplevel.title("Centered!")
if __name__ == '__main__':
root = tk.Tk()
root.title("Not centered")
win = tk.Toplevel(root)
center(win)
root.mainloop()
Я вызываю метод update_idletasks
, прежде чем извлекать ширину и высоту окна, чтобы гарантировать верность возвращаемых значений.
Tkinter не видит, есть ли два или более монитора расширенного горизонтального или вертикального. Таким образом, вы получите общее разрешение всех экранов вместе, и ваше окно окажется где-то посередине экранов.
PyQt , с другой стороны, также не видит среду с несколькими мониторами, но она получит только разрешение монитора Top-Left (Imagine 4 monitor, 2 up и 2 вниз, делая квадрат). Таким образом, это делает работу, помещая окно в центр этого экрана. Если вы не хотите использовать оба параметра, PyQt и Tkinter , возможно, лучше начать с PyQt с начала.
Вы можете заменить значок переполнения следующим образом:
val drawable = ContextCompat.getDrawable(this, R.drawable.your_vector_drawable)
mToolbar.overflowIcon = drawable
И затем установите mToolbar
в качестве панели действий поддержки. Теперь, чтобы заменить его буквой или цифрой, я думаю, сначала нужно создать вектор, который можно нарисовать, или png этого.