【问题标题】:Scrollbar for Message Widget in TkinterTkinter 中消息小部件的滚动条
【发布时间】:2015-08-19 23:42:00
【问题描述】:

我正在尝试将之前在命令行中编写的游戏转换为 GUI (https://github.com/abhinavdhere/Share-Trader-PC/releases/tag/v1.0) 我在一帧中构建了一个类似按钮结构的菜单,然后单击帮助,前一帧 f1 应该消失并且应该显示帮助文本。我使用 Message 小部件来显示文本,但它很长并且需要滚动条。我试图添加一个垂直滚动条,但无法使其工作。我提到了python and tkinter: using scrollbars on a canvas 并尝试这样做,但它仍然只显示消息但没有滚动条。这是它的功能:

def help(self):
    self.f1.pack_forget()
    f2=tk.Frame(self,bg='#FFCC00')
    f2.grid(row=0,column=0)
    helpMan=open("Game Rules.txt","r")
    hText=helpMan.read()
    c1=tk.Canvas(f2,width=640,height=480,scrollregion=(0,0,700,500))
    c1.pack(side="left",expand=True,fill="both")
    text1=tk.Message(f2,text=hText)
    c1.create_window(0,0,anchor="nw",window=text1)
    scrollY=tk.Scrollbar(f2,orient="vertical",command=c1.yview)
    scrollY.pack(side="right",fill="y") 
    c1.config(yscrollcommand = scrollY.set)

附:为什么做一个简单的滚动条这么麻烦?

【问题讨论】:

标签: python canvas tkinter scrollbar message


【解决方案1】:

message 小部件不支持滚动。它缺少用于滚动协议的命令yviewxview。它实际上只是一个多行标签。也很丑,不能做主题。

您应该将message 小部件替换为text 小部件,该小部件还可以显示多行文本,并且可以支持滚动和格式化文本,如果需要,可以使用标签附加样式信息。

要使文本小部件看起来与消息小部件相同,以下应该可以工作:

m = Message(root)
txt = Text(root, background=m.cget("background"), relief="flat",
    borderwidth=0, font=m.cget("font"), state="disabled")
m.destroy()

【讨论】:

  • 您将小部件状态设置为“已禁用”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 2013-05-24
  • 2011-03-06
  • 2022-12-03
  • 1970-01-01
  • 2021-10-15
相关资源
最近更新 更多