将变量传递给Tkinter几何方法

时间:2014-12-19 22:35:30

标签: python tkinter

我现在一直试图找出是否有办法将变量传递给Tkinter中的geometry方法。

我知道geometry方法接受字符串:

root = Tk()
root.geometry("1200X1024")

我想根据屏幕宽度打开窗口。

root = Tk()
w = root.winfo_screenwidth()
h = root.winfo_screenheight()

我尝试过的是:

geometry = "%dX%d" % (w,h)
root.geometry(geometry)

root.geometry(("%dX%d" % (w,h)))

无论我如何连接变量,它都会产生这个错误:

TlcError: bad geometry specifier "1280X1024"

那么可以将变量传递给geometry方法吗?

4 个答案:

答案 0 :(得分:4)

当解释你给它的字符串时,Tk.geometry方法不是很“聪明”。相反,它要求您完全按照以下方式指定窗口大小:

<width>x<height>

意思是,你的大写X令人困惑。只需将X更改为x,您的代码即可正常使用。

答案 1 :(得分:3)

#works for python 3.4

screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()
screen_resolution = str(screen_width)+'x'+str(screen_height)

window.geometry(screen_resolution)

答案 2 :(得分:2)

您可以使用带有字符串 format() 函数的括号来简化代码:

window.geometry("{}x{}".format(window_width, window_height))

以及设置它的 x 和 y 位置属性,并用“+”连接:

window.geometry("{}x{}+{}+{}".format(window_width, window_height, x-coord, y-coord))

答案 3 :(得分:-1)

你不需要做任何复杂的事情:

root = Tk()
root.geometry("500x200") #taking x=500 and y=200 for example