【问题标题】:Configuring a Tkinter Message to display tuples on individual lines配置 Tkinter 消息以在单独的行上显示元组
【发布时间】:2019-02-03 17:58:29
【问题描述】:

我正在尝试做标题所说的,配置 Tkinter 消息,以便 WL_ratios 中的每个元组都有自己的行,而不会被括号括起来。创建更多消息不是一种选择,因为 WL_ratio 的长度可能会有所不同,所以我必须只使用一个。

#(below) is in the __init__ of the class
self.Leaderboardtext = Message(self.LeaderboardFrame,text="",width=100)
self.Leaderboardtext.pack() 

#this (below) is in another function in the same class.
WL_ratios = [["james",3]["harrison",2]["jo",1]]
self.Leaderboardtext.configure(text="Leaderboard: {0}".format(WL_ratios))

到目前为止,width=100 是唯一允许我将文本换行的方法。然而,这仍然不起作用,因为每个元组的长度都不同,所以一些元组分布在两行上,这不是我想要的。我知道您可以通过字符数来限制每一行,但是元组的字符长度又有所不同,所以我认为这不是一个选择。 有没有人有任何可行的建议?

【问题讨论】:

  • 您是否尝试过使用文本变量而不是简单的字符串?
  • @LilianBordeau 抱歉,指的是什么?
  • 对不起,我误解了你的问题,textvariable 无济于事。由于您使用的是 Message 小部件,因此您可以在元组之间添加换行符 '\n'。这将为每个人添加一个新行。
  • 但这无论如何都是不好的做法。 WL_ratios 长度可以变化的事实不应限制您创建多个消息小部件。如果您在 WL_ratio 上进行迭代,无论如何您都会遍历所有这些。如果你想创建一个合适的排行榜表,包含列和行,你可以使用treeview widget
  • 在将数据传递给小部件之前,您是否尝试过将数据显式转换为由换行符分隔的行?

标签: python tkinter namedtuple


【解决方案1】:

只需将每个元组转换为字符串,然后在其中添加\n,就可以了。或者,您可以分别调用元组中的每个值,并在此处添加 \n

【讨论】:

  • 从字面上看,“在你的元组之间添加\n”是行不通的。您需要将元组转换为字符串,并在每个字符串之间插入换行符。您可能希望更明确地说明您的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 2013-02-23
  • 2016-11-06
  • 2022-08-09
  • 1970-01-01
相关资源
最近更新 更多