首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MacOS和Windows上,Tkinter网格列间距是否存在内在差异?如果是这样的话,我该怎么办呢?

在MacOS和Windows上,Tkinter网格列间距是否存在内在差异?如果是这样的话,我该怎么办呢?
EN

Stack Overflow用户
提问于 2021-05-30 15:09:39
回答 3查看 251关注 0票数 0

我已经阅读了一些更简单的视频教程和文档,试图通过网格布局找出间隔的窍门,以便将其用于我自己的应用程序,但是当我尝试使用网格间距时,它似乎添加了额外的间距/填充,而我并没有在其中进行编码。

我越关注这个问题,它就越像是MacOS和Windows之间的问题,但是如果是这样的话,有没有人知道如何绕过它呢?

例如,我试图复制和粘贴在这个链接上找到的计算器的代码:https://zetcode.com/tkinter/layout/,我得到了两个非常不同的结果。

上面的图像来自示例页面,它看起来像是在windows上完成的,而下面的图像是当我复制/粘贴代码并亲自试用时发生的事情。

这个间距没有那么差,如果我必须处理它,我想我会这样做,但当我尝试下面的代码从一个视频教程,我的布局是非常不同的间隔。

我还链接了视频,因为有一段时间,编码器经历了一些类似的间隔,但随后修复了它,输入相同的代码并不能为我带来相同的修复。

代码语言:javascript
运行
复制
from tkinter import *

root=Tk()
root.title("Simple Calculator")

e = Entry(root, width=35, borderwidth=5)
e.grid(row=0, column=0, columnspan=3, padx=10, pady=10)

def button_click(number):
    #e.delete(0, END)
    e.insert(0, number)

# Define Buttons

button_1 = Button(root, text="1", padx=40, pady=20, command=lambda: button_click(1))
button_2 = Button(root, text="2", padx=40, pady=20, command=lambda: button_click(2))
button_3 = Button(root, text="3", padx=40, pady=20, command=lambda: button_click(3))
button_4 = Button(root, text="4", padx=40, pady=20, command=lambda: button_click(4))
button_5 = Button(root, text="5", padx=40, pady=20, command=lambda: button_click(5))
button_6 = Button(root, text="6", padx=40, pady=20, command=lambda: button_click(6))
button_7 = Button(root, text="7", padx=40, pady=20, command=lambda: button_click(7))
button_8 = Button(root, text="8", padx=40, pady=20, command=lambda: button_click(8))
button_9 = Button(root, text="9", padx=40, pady=20, command=lambda: button_click(9))
button_0 = Button(root, text="0", padx=40, pady=20, command=lambda: button_click(0))
button_add = Button(root, text="+", padx=39, pady=20, command=lambda: button_click(7))
button_equal = Button(root, text="=", padx=98, pady=20, command=lambda: button_click(7))
button_clear = Button(root, text="clear", padx=88, pady=20, command=lambda: button_click(7))

# Put the buttons on the Screen

button_1.grid(row=3, column=0)
button_2.grid(row=3, column=1)
button_3.grid(row=3, column=2)

button_4.grid(row=2, column=0)
button_5.grid(row=2, column=1)
button_6.grid(row=2, column=2)

button_7.grid(row=1, column=0)
button_8.grid(row=1, column=1)
button_9.grid(row=1, column=2)

button_0.grid(row=4, column=0)
button_add.grid(row=5, column=0)

button_equal.grid(row=5, column=1, columnspan=2)
button_clear.grid(row=4, column=1, columnspan=2)


root.mainloop()

第一张是我的,第二张是编码器的/YouTuber的,这里的列之间的间距/填充看起来太大了,在构建UI时不能“处理”。有人有办法解决吗?我想要的东西,有清洁,更简洁的外观表面-Windows布局/间隔。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-06-01 14:59:30

使用padx和pady =0

.grid(padx = 0,pady=0)

这应该会减少中间的间隔,它看起来就像所需的图片。

票数 1
EN

Stack Overflow用户

发布于 2021-05-30 16:30:31

padxpady取决于屏幕的分辨率(您应该查找每个小部件的方法),因为大小以像素为单位。你可以玩放置,有3种方法来放置你的按钮,标签等。grid()pack()place()。你应该使用你觉得舒服和符合你的需要的那个。你也许可以试试这样的方法:

代码语言:javascript
运行
复制
from tkinter import *

root=Tk()
root.title("Simple Calculator")

e = Entry(root, width=35, borderwidth=5)
e.grid(row=0, column=0, columnspan=3, padx=10, pady=10)

def button_click(number):
    #e.delete(0, END)
    e.insert(0, number)

# Define Buttons

button_1 = Button(root, text="1", padx=40,pady=20,command=lambda: button_click(1))

#Place Buttons

button_1.place(relx=FLOAT,rely=FLOAT,relheight=FLOAT,relwidth=FLOAT)



root.mainloop()

relxrely是水平的和垂直的偏移量,是0.0到1.0之间的浮动,是父小部件高度和宽度的一小部分。因此,对于place,您可以根据主窗口调整小部件。(relheightrelwidth遵循相同的原则) https://www.tutorialspoint.com/python/tk_place.htm

票数 0
EN

Stack Overflow用户

发布于 2021-05-31 10:11:42

如果标题是你的问题,那就不是,Windows和macOS之间没有很大的区别。但调整大小取决于正在查看的显示分辨率。

例如,第一个图像是以不同的分辨率完成的,第二个也是如此。您应该使用padxpady,使其适合您的解决方案。

默认情况下,padxpady将始终是像素,因此在不同的分辨率(屏幕分辨率也是像素)上,它将根据值的不同而有所不同。

在macOS大sur 11.3.1 1920x1080上尝试代码时的图像:

在macOS大sur上尝试代码时的图像,但是是@roganjosh的1440x990

正如您所看到的,这是macOS本身,但是当您检查按钮的宽度时,结果又是不同的,这与youtuber在Windows中得到的非常相似。

但是,您还可以看到,图像之间的水平距离在操作系统之间也会发生变化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67762706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档