Tkinter:winfo_reqwith()返回错误的值

时间:2019-06-10 16:01:55

标签: python tkinter tk

我编写了一个代码,该代码在调整窗口大小后会打印窗口的大小,但是无论窗口大小如何,每次函数打印宽度时都打印“ 200”,高度时打印“ 200”。 我该如何解决这个问题?

代码如下:

$.ajax({
    type: "POST",
    dataType: "text",
    data: jsObj,
    url: "admin_crud.php",

    success: function (result) {
        console.log("success", result);
    },

    error: function (e) {
        console.log("Unsuccessful:", e);
    }
});

已解决!

2 个答案:

答案 0 :(得分:1)

winfo_req_widthwinfo_req_height方法返回窗口小部件请求的宽度和高度 –本质上,当出现以下情况时,widthheight参数您创建窗口[1]。根窗口的默认请求宽度和高度为200像素。

设置几何图形时,不会更改请求的窗口宽度和高度,而只会更改实际的宽度和高度。这是因为geometry命令正在向窗口管理器发出命令,而不是更改窗口小部件本身的配置。

如果要让winfo_reqwidthwinfo_reqheight返回300,则需要配置窗口的widthheight参数(例如:root.configure(width=300, height=300)

如果要获取实际宽度,则需要调用winfo_widthwinfo_height。另外,您应该每次在事件处理程序中调用这些函数,因为如果用户调整窗口大小,该值将更改:

def check(event):
    print(root.winfo_width())
    print(root.winfo_height())

[1]大多数小部件允许您在创建宽度和高度时指定宽度和高度(例如:Label(root, width=300, height=300))。奇怪的是,创建根窗口时无法指定这些参数。但是,您可以在通过configure方法(例如:root.configure(width=300, height=300))创建后更改它们。

答案 1 :(得分:-2)

from tkinter import *

Root=Tk()
Root.title("Window")

lab = Label(Root, text = "Test")
lab.pack()
Root.geometry("300x300")

RWidth=Root.winfo_width()
RHeight=Root.winfo_height()


def check(event):
    RWidth = Root.winfo_width()
    RHeight = Root.winfo_height()
    print(RWidth)
    print(RHeight)

Root.bind("<Configure>",check)


mainloop()

您必须在适当的位置写RWidth = Root.winfo_width()RHeight = Root.winfo_height()。