如何将尺寸从像素更改为任何其他像cm,毫米等

时间:2018-04-05 09:34:39

标签: python python-2.7 tkinter

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”。

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

2 个答案:

答案 0 :(得分:1)

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

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

  

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

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

Button

这些是tkinter支持的后缀:

  • empty_image=tk.PhotoImage(width=0, height=0) f = tk.Button(root, image=empty_image, width='2.54c', height='1i') - 厘米
  • c - 英寸
  • i - 毫米
  • m - 打印机点数(1/72英寸)

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

注意:您必须记住包含p或文字不会显示。

例如:

compound

答案 1 :(得分:1)

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

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)。