当前位置: 首页 > 面试题库 >

显示方形Tkinter.Button的?

司空祯
2023-03-14
问题内容

为什么此代码显示的按钮比宽度高?

import Tkinter, tkFont
top = Tkinter.Tk()
right = Tkinter.Frame(top)
right.pack(side = "right")
font = tkFont.Font(family="Helvetica", size=60, weight = tkFont.BOLD)

for i in xrange(6):
    b = Tkinter.Button(right, text = str(i), font = font, width = 1, height = 1)
    top.rowconfigure(i, weight = 1)
    top.columnconfigure(i, weight = 1)
    b.grid(row = i/3, column = i%3, sticky = "NWSE")

top.mainloop()
  • 所有按钮都使用 width=1, height=1
  • 对于其中的每一行和每一列,right都有一个right.rowconfigure(rowi, weight=1)(或columnconfigure)调用。
  • 每个按钮的每个网格位置都b带有粘性NSEW
  • 我已经设定 right.grid_propagate(0)

我到底在做什么错?

如果将按钮直接放在上top,则按钮会变得比高度宽。似乎正在调整它们的大小以适应传播的空间。如何防止调整大小?


问题答案:

如果Button显示文本,则在使用heightwidth选项时,它们的单位以文本为单位。为了使它们方形,使用像素单位会更好。为此,您需要将该按钮放置在中Frame,并确保框架不会传播(grid_propagate),并允许其子元素填充(columnconfigurerowconfigure)。

这只是一个示例,因为我看不到您的代码。

import Tkinter as tk

master = tk.Tk()

frame = tk.Frame(master, width=40, height=40) #their units in pixels
button1 = tk.Button(frame, text="btn")


frame.grid_propagate(False) #disables resizing of frame
frame.columnconfigure(0, weight=1) #enables button to fill frame
frame.rowconfigure(0,weight=1) #any positive number would do the trick

frame.grid(row=0, column=1) #put frame where the button should be
button1.grid(sticky="wens") #makes the button expand

tk.mainloop()

编辑: 我刚刚看到您的编辑(添加您的代码)。将相同的内容应用于代码后;

import Tkinter, tkFont
top = Tkinter.Tk()
right = Tkinter.Frame(top)
right.pack(side = "right")
font = tkFont.Font(family="Helvetica", size=20, weight = tkFont.BOLD)

for i in xrange(6):
    f = Tkinter.Frame(right,width=50,height=50)
    b = Tkinter.Button(f, text = str(i), font = font)

    f.rowconfigure(0, weight = 1)
    f.columnconfigure(0, weight = 1)
    f.grid_propagate(0)

    f.grid(row = i/3, column = i%3)
    b.grid(sticky = "NWSE")

top.mainloop()


 类似资料:
  • 图形与显示 [AGP] agp={off|try_unsupported} off 表示关闭内核的AGP(CONFIG_AGP)支持; try_unsupported 表示尝试驱动那些不受支持的芯片(可能会导致系统崩溃或数据错误) [HW,DRM] gamma=浮点数 设置显示器的Gamma值。 video.brightness_switch_enabled={0|1} [背景知识]如果ACPI

  • 我需要创建一个基于现有文本的条形码。我找到了许多解决方案,但没有一个工作,而不是条形码,我看到的只是一个白色矩形。这里是不工作的代码,但也许它会帮助您找到解决方案

  • 问题内容: 以下是熊猫数据框和从中生成的条形图: 我需要在相应栏上方显示相应主题的每个兴趣类别的百分比。我可以创建带有百分比的列表,但是我不知道如何将其添加到相应栏的顶部。 问题答案: 尝试将以下循环添加到您的代码中: 说明 通常,您可以在图上添加注释。 此方法采用注释的值和放置注释的坐标。 在一个barplot,每个“条”是由a表示,并且每个这些矩形的具有属性,和矩形的左下角的COORDS,所有

  • 问题内容: 我早些时候发布了这个问题,并被告知将其设为SSCCE(如果我可以进行任何改进,随时告诉我):我想知道为什么当单击我的按钮“确认”时,旧方块消失了,重新绘制的方块不会出现在我的GUI(使用摆动制作)上。Squares类绘制200个间隔开的正方形,其中的ID(从String,0、1、2或3作为字符串)从另一个类获得(出于这个问题的目的,我们假设它始终为0,不包括该类)。为了澄清:Squar

  • 问题内容: 因此,我正在尝试制作营销页面的原型,并使用Bootstrap和新的Font Awesome文件。问题是,当我尝试使用图标时,页面上呈现的所有内容都是一个大方块。 这是我将文件包括在头中的方式: 这是我尝试使用图标的示例: 但是所有这些都呈现在一个大方块中。有人知道会发生什么吗? 问题答案: 根据文档(第3步),您需要修改提供的CSS文件以指向站点上的字体位置。