2

画面サイズに応じた比率でサイズを設定したウィンドウフレーム広告を中央に配置したい。しかし、そのようなプログラムを実行するためにコードを正しく変更する場所がわかりません。私のプログラムは次の例です:

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

2 に答える 2

4

なぜコメントアウトしたのgeometryですか?それはあなたが本当に必要としているものにかなり近いです。これを試して:

master.geometry("%sx%s+%s+%s" % (FrameSizeX,FrameSizeY,FramePosX,FramePosY))
于 2012-06-19T01:25:09.893 に答える
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()
于 2012-06-19T06:46:12.567 に答える