Центрирование и размер окна кадра в Python класса Tkinter

Я хочу, чтобы в центре окна был установлен размер кадра, используя соотношение по экрану. Но я не вижу, где правильно изменить код для выполнения такой программы. Моя программа выглядит следующим образом:

class App: def __init__(self,master): ScreenSizeX = master.winfo_screenwidth() # Get screen width [pixels] ScreenSizeY = master.winfo_screenheight() # Get screen height [pixels] ScreenRatio = 0.8 # Set the screen ratio for width and height FrameSizeX = int(ScreenSizeX * ScreenRatio) FrameSizeY = int(ScreenSizeY * ScreenRatio) FramePosX = (ScreenSizeX - FrameSizeX)/2 # Find left and up border of window FramePosY = (ScreenSizeY - FrameSizeY)/2 print FrameSizeX,FrameSizeY,FramePosX,FramePosY #geometry(str(self.winfo_screenwidth())+"x"+str(self.winfo_screenheight())+"+0+0") frame = Tkinter.Frame(master) frame.pack() self.button = Tkinter.Button(frame,text="Quit",fg="red",command=frame.quit) self.button.pack() self.hi_there = Tkinter.Button(frame,text="Hi!",command=self.say_hi) self.hi_there.pack() def say_hi(self): print "hello !" if __name__ == "__main__": root = Tkinter.Tk() app = App(root) root.mainloop() 

2 Solutions collect form web for “Центрирование и размер окна кадра в Python класса Tkinter”

Почему вы прокомментировали geometry ? Это очень близко к тому, что вам действительно нужно. Попробуй это:

 master.geometry("%sx%s+%s+%s" % (FrameSizeX,FrameSizeY,FramePosX,FramePosY)) 

Это последний код, который работает для этой функции:

 import Tkinter #Python integrated tool kit for interfaces class App: def __init__(self,master): # Define frame size and position in the screen : ScreenSizeX = master.winfo_screenwidth() # Get screen width [pixels] ScreenSizeY = master.winfo_screenheight() # Get screen height [pixels] ScreenRatio = 0.8 # Set the screen ratio for width and height FrameSizeX = int(ScreenSizeX * ScreenRatio) FrameSizeY = int(ScreenSizeY * ScreenRatio) FramePosX = (ScreenSizeX - FrameSizeX)/2 # Find left and up border of window FramePosY = (ScreenSizeY - FrameSizeY)/2 master.geometry("%sx%s+%s+%s"%(FrameSizeX,FrameSizeY,FramePosX,FramePosY)) frame = Tkinter.Frame(master) frame.pack() self.button = Tkinter.Button(frame,text="Quit",fg="red",command=frame.quit) self.button.pack() self.hi_there = Tkinter.Button(frame,text="Hi!",command=self.say_hi) self.hi_there.pack() def say_hi(self): print "hello !" if __name__ == "__main__": root = Tkinter.Tk() app = App(root) root.mainloop() 
  • Введенный график Matplotlib в Tkinter падает на Python 3.5
  • Изменение размера виджета списка Tkinter при изменении размера окна
  • Как удалить только границу окна?
  • Создание события click в tkinter
  • Как отключить ввод в текстовый виджет, но разрешить программный ввод?
  • Python Tkinter OptionMenu добавляет команду нескольким OptionMenus
  • Меню включения / выключения tkinter
  • Как использовать py2app с виртуальной средой?
  • для создания кнопки при нажатии на печать номера на этой кнопке в поле ввода в python 3.3
  • неблокирующее информационное диалоговое окно в Tkinter
  • Ввод данных от пользователя и возврат ответа в TKinter
  • Python - лучший язык программирования в мире.