【问题标题】:Equalivent of Qt.setGeometry() in tkintertkinter 中 Qt.setGeometry() 的等价物
【发布时间】:2016-07-21 15:28:36
【问题描述】:

tkinter 中 PyQt setGeometry() 的等值函数是什么?或者有没有这样的功能?我搜索了一下,但没有找到,所有的例子看起来都像 tkinter 在特定的小部件上工作,我们可以设置宽度-高度。

EDIT:

setGeometry() 做了两件事。它将窗口定位在 屏幕并设置其大小。前两个参数是 xy 窗口的位置。第三个是宽度,第四个是 窗口的高度。

【问题讨论】:

  • root.geometry() 不行吗?
  • @ParvizKarimli 关于标签、按钮等不,不工作。
  • 对于您在评论中提到的其他小部件,Tkinter 中没有类似的东西。但是widthheight 选项将完美地完成这项工作。
  • 在 Tkinter 中,小部件的宽度和高度由小部件选项定义(width & height);然后小部件的几何由三​​个几何管理器(pack()grid()place())之一定义。我从来没有偶然发现任何不同的选择。
  • @BryanOakley in PyQt setGeometry() 用于在一行中管理小部件的宽度和高度以及几何形状 ((x, y, w, h))。

标签: python tkinter pyqt4 python-3.4 pyqt5


【解决方案1】:

tkinter 最接近的东西可能是place 几何管理器。使用它,您可以设置 x,y 坐标(绝对或相对)以及宽度和高度属性(也可以是绝对或相对)。

例如,要将标签放置在 100,100 且宽度和高度为其父级的 50%,您可以执行以下操作:

import tkinter as tk
root =  tk.Tk()
label = tk.Label(root, text="Hello, world")
label.place(x=100, y=100, relwidth=.5, relheight=.5)
root.mainloop()

但是,地点很少是正确的选择。 Tkinter 非常聪明地为小部件选择合适的尺寸,并布置它们。在不了解您要解决的实际问题的情况下,很难给出好的建议,但几乎可以肯定,packgrid 会更好。

【讨论】:

    【解决方案2】:

    您还可以执行类似于 @BryanOakley 的 grid 几何经理的回答:

    from tkinter import *
    root = Tk()
    
    label = Label(root, bg='cyan')
    label.grid(ipadx=100, ipady=50, padx=50, pady=50)
    

    更新:请反馈您认为此答案无用的原因。

    【讨论】:

    • 这不符合问题的要求。这不会设置小部件的 x/y 坐标,它只是添加了一堆填充。它也不会改变小部件的宽度和高度。
    猜你喜欢
    • 2019-11-03
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多