【问题标题】:how can i change the Dimension from Pixels to any other like cm,millimeter etc我如何将尺寸从像素更改为厘米、毫米等任何其他尺寸
【发布时间】:2018-04-05 09:34:39
【问题描述】:
from Tkinter import *
root = Tk()
root.geometry('361mx203m')
a = Label(root,text="hello everyone",font=('Helvetica',"25m"),anchor='center')
a.place(x=0,y=0)
b1 = Button(root,text="pal entry",height="100m",width="25m")
b1.place(x=10,y=50)


root.mainloop()

TclError: 预期的整数,但得到“25m”。

建议我将其转换为毫米的代码

【问题讨论】:

  • 这里正确的解决方案是忘记.place 几何管理器的存在,而使用其中一种有用的几何管理器(.pack.grid)。就在几天前,我们有人发布了他的 GUI,其中每个小部件都是手动放置的,在我的 PC 上看起来非常糟糕。
  • @Aran-Fey:这与所提出的问题完全无关。这是个好建议,但与这个问题无关。

标签: python python-2.7 tkinter


【解决方案1】:

通常Buttonheight 属性是文本行数,而不是像素。为了将其解释为像素,按钮必须具有图像。

来自按钮的规范 tcl/tk 文档:

height - 指定按钮的所需高度。如果按钮中正在显示图像或位图,则该值以屏幕为单位(即 Tk_GetPixels 可接受的任何形式);对于文本,它位于文本行中。如果未指定此选项,则按钮的所需高度是根据其中显示的图像或位图或文本的大小计算得出的。

如果您使用的是图片,那么您可以使用带有后缀的物理尺寸。如果没有后缀,则该值被解释为像素。例如,以下将创建一个一英寸见方的按钮:

empty_image=tk.PhotoImage(width=0, height=0)
f = tk.Button(root, image=empty_image, width='2.54c', height='1i')

这些是 tkinter 支持的后缀:

  • c - 厘米
  • i - 英寸
  • m - 毫米
  • p - 打印机点(1/72 英寸)

如果您不想使用图片,可以使用不可见的图片和文本来触发宽度和高度解释方式的变化。

注意:您必须记住包含compound,否则文本将不会显示。

例如:

empty_image = PhotoImage(width=0, height=0)
b1 = Button(root, image=empty_image, text="pal entry",
    compound="center", height="100m", width="25m")

【讨论】:

  • @Muthuselvan 我已经更新了我的答案来展示一个例子。
  • 但我在文本中使用它..不用于图像
  • @Muthuselvan:我已经更新了我的答案以包含一个示例。
  • 所以我们的结论是我们不能将尺寸修改为厘米或毫米????
  • @Muthuselvan:这不是结论,而是记录在案的行为。我已经向您展示了如何使用厘米、英寸、毫米和打印机点。
【解决方案2】:

您可以通过以下方式将字符串尺寸转换为像素数:

widget.winfo_fpixels(str_dim)

根据https://effbot.org/tkinterbook/widget.htm

winfo_fpixels(距离) [#] 将给定的距离(以 Tkinter 接受的任何形式)转换为相应的像素数。

distance
    The screen distance.
Returns:
    The corresponding number of screen pixels, as a floating point number.

作为一个快速测试,我做了:

b.winfo_fpixels('3m')

它给出了结果11.35180055401662,并且

b.winfo_fpixels('3')

它给出了结果3.0

要走另一条路,你必须做一些数学......

由于b.winfo_fpixels('1m') 是 3.781388478581979,您可以通过除以该数字将像素转换为毫米。

所以你可以设置pix_per_1mm = b.winfo_fpixels('1m')

然后,如果您有 100 个像素,则为 100 / pix_per_1mm = 26.4453125,您可以将其四舍五入为“26.4m”

您也可以类似地处理其他三个维度(c、p、i)。

【讨论】:

    猜你喜欢
    • 2011-09-03
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多