在Tkinter中设置框架大小和位置

2 投票
1 回答
3717 浏览
提问于 2025-04-17 16:10

我正在尝试在Tkinter中设置一个框架的大小和位置(主控件)。根据这个回答,我在代码中添加了以下内容:

from Tkinter import *
import ctypes
user = ctypes.windll.user32
screensize = (user.GetSystemMetrics(0), user.GetSystemMetrics(1), user.GetSystemMetrics(2), user.GetSystemMetrics(3))

class GetWord:
    def __init__(self, master):
        master.geometry("%s+%s+%s+%s" % (screensize[0], screensize[1], screensize[2], screensize[3]))
        # I added the above in, but not sure how it works
        self.frame = Frame(master, width = screensize[0], height = screensize[1])
        self.frame.grid()

但是,当我这样做时,我遇到了一个TclError错误:

Traceback (most recent call last):
  File #file path, line 39, in <module>
    f = GetWord(root)
  File #file path, line 8, in __init__
    master.geometry("%s+%s+%s+%s" % (screensize[0], screensize[1], screensize[2], screensize[3]))
  File "C:\Python2.7.3\lib\lib-tk\Tkinter.py", line 1534, in wm_geometry
    return self.tk.call('wm', 'geometry', self._w, newGeometry)
TclError: bad geometry specifier "1366+768+17+17"

我这样调用这个类:

root = Tk(className='derp')
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
f = GetWord(root)
root.mainloop()

我该怎么解决这个问题呢?我希望这个框架一开始就位于屏幕的中心,并且有一个特定的窗口大小(现在是全屏,但我稍后会更改)。谢谢!

1 个回答

5

你需要用字母"x"来代替"+"。

master.geometry("%sx%sx%sx%s" % (screensize[0], screensize[1], screensize[2], screensize[3]))

撰写回答