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”。
建议我将其转换为毫米的代码
答案 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)。