2012-06-18 1 views
2

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

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() 

ответ

4

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

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

Совершенная !!! Спасибо ! – user1187727

1

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

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() 
Смежные вопросы