【问题标题】:Setting a Frame Size and Location in Tkinter在 Tkinter 中设置帧大小和位置
【发布时间】:2013-02-17 23:58:46
【问题描述】:

我正在尝试在 Tkinter 中设置框架大小和框架(主小部件)的位置。基于this answer,我将其添加到我的代码中:

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

我该如何解决这个问题?我想让框架从屏幕的中心开始,并从特定的窗口大小开始(现在它是全屏的,但我稍后会改变它)。谢谢!

【问题讨论】:

  • 宽度、高度、左、右应该是"%sx%s+%s+%s"(注意x而不是+
  • @AntonKovalenko 哦,小错误。您应该将其添加为答案。另外,我怎样才能使框架居中?
  • 你已经用框架填满了用户的整个屏幕,我认为不需要居中。
  • @Siddharth 我只是以全屏为例。在我的实际程序中,大约是w/4h/4

标签: python graphics tkinter


【解决方案1】:

您需要使用字母“x”而不是“+”

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

【讨论】:

  • 我一般会使用screensize[0]/2screensize[1]/2作为参数。如何将窗口置于屏幕中间?
猜你喜欢
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 2021-03-20
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多