这是我的代码:
import tkinter as tk
from tkinter import *
root = Tk()
root.title("Calculator")
root.geometry("100x200")
text = Text(root, height = 1, width = 10)
text.grid(row = 0, column = 0)
b1 = Button(root, text="1", command= lambda: text.insert(END, str(1)))
b1.grid(row = 1, column = 0)
b2 = Button(root, text="2", command= lambda: text.insert(END, str(2)))
b2.grid(row = 1, column = 1)
b3 = Button(root, text="3", command= lambda: text.insert(END, str(3)))
b3.grid(row = 1, column = 2)
b4 = Button(root, text="4", command= lambda: text.insert(END, str(4)))
b4.grid(row = 1, column = 3)
当我执行代码时,我的格式化全部搞砸了:
是否与我使用.grid()的方式有关?
答案 0 :(得分:1)
它的显示方式是因为您的几何尺寸很小,无法显示窗口中的所有窗口小部件,并且网格的工作方式类似于Excel工作表中的排列,因此您可以增大或减小行大小或列大小以将其定位到您想要的位置。查看名为2
的按钮,增加行和列大小
import tkinter as tk
from tkinter import *
root = Tk()
root.title("Calculator")
root.geometry("200x200")
text = Text(root, height = 1, width = 10)
text.grid(row = 0, column = 0)
b1 = Button(root, text="1", command= lambda: text.insert(END, str(1)))
b1.grid(row = 1, column = 0)
b2 = Button(root, text="2", command= lambda: text.insert(END, str(2)))
b2.grid(row = 2, column = 1)
b3 = Button(root, text="3", command= lambda: text.insert(END, str(3)))
b3.grid(row = 1, column = 2)
b4 = Button(root, text="4", command= lambda: text.insert(END, str(4)))
b4.grid(row = 1, column = 3)
答案 1 :(得分:1)
您的窗口格式是这样的,因为除非进一步配置grid
使得窗口小部件对于给定内容具有尽可能少的像素数量,并且它还假设网格中的每个节点占用相同的量该行或列的空间(所有节点中所需的最小值,在示例条目窗口小部件中具有最大的像素要求)。
据我所知,条目小部件默认 20 字符宽度宽,高度为1个字符。
按钮小部件确实需要内部所需的空间量,"1"
,"2"
,"3"
等等。
由于20个字符宽于1个字符,因此在1个字符按钮周围有一个空格,以匹配条目小部件宽度。
有一些方法可以防止这种情况,我能想到的是:
将text.grid(row = 0, column = 0)
更改为text.grid(row = 0, column = 0, columnspan=4)
,使其不仅跨越1列而是跨越4列,以便与其下的整个按钮匹配。