tkinter wraplength单位是像素吗?

时间:2019-03-19 12:31:01

标签: python tkinter

Re:tkinter.Label的wraplength,来自John Shipman的NM Tech文档:“您可以通过将此选项设置为所需的数字来限制每行中的字符数。默认值0表示行将仅在换行符处中断。”其他资料也认为换行长度的单位是字符。

下面的代码似乎在换行,好像wraplength的单位是像素,而不是字符。例如,如果将wraplength设置为10,则标签将显示一列文本,宽度为一或两个字符。如果将wraplength设置为20,则这些行的长度为3或4个字符。

在我的应用程序中,用户将为自定义表单创建自己的简单小部件,如果wraplength选项使用单位字符计数而不是其作用,则更好。由于NMTech文档适用于Tkinter 8.5,但Python 3.5附带的是8.6,也许可以解释两者之间的区别,但我看不到8.6的文档。

但是理想情况下,行应该在单词之间的最近空格处换行,而wraplength只是用作最大行长。因此,如果用户无论如何都必须输入自己的\ n,则对我来说,wraplength似乎毫无用处。

摘要:在用户将为其简单的小部件输入选项值的用户的GUI中,1)有一种方法可以让Tkinter接受换行长度单位的字符,而2)我可以让该行在最近处中断吗小于wraplength的空格,而wraplength仅用作最大行长,而不是绝对行长?

感谢任何解决方案或建议。

import tkinter as tk

root = tk.Tk()

sib = tk.Label(root, text='Give em hell Harry', wraplength=10)
sib.grid()

root.mainloop()

1 个答案:

答案 0 :(得分:2)

  

有没有办法让Tkinter接受换行长度单位的字符

不,没有。如果需要在单词边界处进行换行,可以使用文本小部件而不是标签。

除非另有说明,否则单位为像素。来自canonical tk documentation

  

包装长度对于可以执行自动换行的小部件,此选项指定最大行长。超过此长度的行将被包装到下一行,因此没有任何一行的长度超过指定的长度。可以以任何标准格式指定屏幕距离值。如果该值小于或等于0,则不进行换行:行将仅在文本中的换行符处中断。

在上文中,“任何用于屏幕距离的标准格式” 表示您可以使用后缀来指定打印机点的距离(例如:“ 72p”),厘米(例如:“ 2.54c”),毫米(例如:“ 1000m”)或英寸(例如:“ 1i”)