【问题标题】:Parameters like width, align, justify won't work in Tkinter Message宽度、对齐、对齐等参数在 Tkinter 消息中不起作用
【发布时间】:2017-02-01 00:34:23
【问题描述】:

我正在尝试使用 width 参数更改 Tkinter 中消息小部件的宽度。我无法让它工作,所以我尝试了 align、justify 和 aspect,它们都产生了相同的结果 - 框保持居中,文本的宽度保持不变。

这是我的代码:

console_Fetch = Message(text="test\ntest\ntest\ntest\ntest",bd=1,relief="sunken",width=300)
console_Fetch.grid(row=7,column=0,padx=5,pady=1,columnspan=2)  

我显然是使用 .grid() 将其打包到窗口中。

这是我的窗口的屏幕截图:

【问题讨论】:

  • 也许您可以使用Label 小部件而不是Message
  • tcl.tk/man/tcl8.6/TkCmd/message.htm 不包括 align 作为 Message 选项。使用align 应该会引发 TclError。
  • 也许width 应该被解释为“最大宽度”。从上面提到的文档中,justify:“例如,假设 -anchor 是 e 并且 -justify 保留 [默认],并且消息窗口比文本所需的大得多。文本将显示为所有行的左边缘对齐,最长行的右边缘是窗口右侧的 -padx;整个文本块将在窗口的垂直范围内居中。" justify 默认为left。您最长的线靠近窗口右侧,如指定的那样。

标签: python tkinter


【解决方案1】:

务实的回答

通常在小部件中设置width 无法按预期工作,这取决于其他方面的优先级,单元格宽度,您可以命名它。它很容易被否决,或者取决于其他条件。

我总是在相邻单元格中给网格一个“骨架”的画布,高度(或宽度)为零。随后在其单元格内使用sticky 拉伸小部件。看看下面的例子:

from tkinter import *
win = Tk()

console_Fetch = Message(text="test\ntest\ntest\ntest\ntest",bd=1,relief="sunken",width=3000)
canvas = Canvas(width = 500, height = 0)
canvas.grid(row=0,column=0)
console_Fetch.grid(row=1,column=0,padx=5,pady=1,columnspan=2, sticky = N+W+E+S)

win.mainloop()

我在this answer 的扫雷矩阵中塑造网格时所做的相同。

【讨论】:

  • 我刚试过,但我似乎无法让它工作:( console_Fetch = Message(text="test\ntest\ntest\ntest\ntest",bd=1,relief="sunken",width=500) canvas = Canvas(width=500,height=0) canvas.grid(row=7,column=0) console_Fetch.grid(row=7,column=0,padx=5,pady=1,columnspan=2)
  • @SarahMacey 我会在几个小时后查看。教学 atm :)
  • @SarahMacey 您需要在不同的行中对画布进行网格化,并且您忘记了对 console_Fetch 进行网格化的粘性部分,就像 PEJK 提到的那样。 sticky = N+S+E+W 将在单元格内拉伸小部件。 "请注意,小部件在其单元格中居中。您可以使用粘滞选项来更改此设置;此选项从集合 N、S、E、W 中获取一个或多个值。将标签与左边框对齐,你可以用W(西)" effbot.org/tkinterbook/grid.htm
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 1970-01-01
相关资源
最近更新 更多