在Tkinter类python中居中并调整窗口大小 [英] Centering and size a windows frame in Tkinter class python

查看:778
本文介绍了在Tkinter类python中居中并调整窗口大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想以窗口框架为中心,使用根据屏幕尺寸的比例设置尺寸。但我不能看到在哪里修改我的代码正确执行这样的程序。我的程序如下:

  class App:
def __init __(self,master):
ScreenSizeX = master.winfo_screenwidth()#获取屏幕宽度[pixels]
ScreenSizeY = master.winfo_screenheight()#获取屏幕高度[像素]
ScreenRatio = 0.8#设置宽度和高度的屏幕比例
FrameSizeX = int(ScreenSizeX * ScreenRatio)
FrameSizeY = int(ScreenSizeY * ScreenRatio)
FramePosX =(ScreenSizeX - FrameSizeX)/ 2#查找窗口的左上边框
FramePosY = ScreenSizeY - FrameSizeY)/ 2

打印FrameSizeX,FrameSizeY,FramePosX,FramePosY

#geometry(str(self.winfo_screenwidth())+x+ str winfo_screenheight())++ 0 + 0)
frame = Tkinter.Frame(master)
frame.pack()

self.button = Tkinter.Button ,text =Quit,fg =red,command = frame.quit)
self.button.pack()

self.hi_there = Tkinter.Button Hi!,command = self.say_hi)
self.hi_there.pack()

def say_hi(self):
printhello!

if __name__ ==__main__:
root = Tkinter.Tk()
app = App(root)
root.mainloop()
c>


解决方案

code> line?这是非常接近你真正需要的。尝试此操作:

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


I want to center a window frame ad set a size using a ratio according to screensize. But I cannot see where to modify my code correctly to perform such program. My program is the following example :

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

解决方案

Why did you comment out the geometry line? It's quite close to what you need really. Try this:

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

这篇关于在Tkinter类python中居中并调整窗口大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆