Python Tkinter中消息小部件的滚动条

Python Tkinter中消息小部件的滚动条,python,canvas,tkinter,scrollbar,message,Python,Canvas,Tkinter,Scrollbar,Message,我正在尝试将以前在命令行中编写的游戏转换为GUI() 我在一个框架中构建了一个类似于菜单的按钮结构,然后单击“帮助”,上一个框架f1应该消失,帮助文本应该显示出来。我使用了一个消息小部件来显示文本,但它很长,需要滚动条。我试图添加一个垂直滚动条,但无法使其工作。我提到并试图这样做,但它仍然只显示消息,但没有滚动条。以下是它的功能: def help(self): self.f1.pack_forget() f2=tk.Frame(self,bg='#FFCC00') f2

我正在尝试将以前在命令行中编写的游戏转换为GUI() 我在一个框架中构建了一个类似于菜单的按钮结构,然后单击“帮助”,上一个框架f1应该消失,帮助文本应该显示出来。我使用了一个消息小部件来显示文本,但它很长,需要滚动条。我试图添加一个垂直滚动条,但无法使其工作。我提到并试图这样做,但它仍然只显示消息,但没有滚动条。以下是它的功能:

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)
另外,为什么制作一个简单的滚动条会如此麻烦?

小部件不支持滚动。它缺少用于滚动协议的命令
yview
xview
。它实际上只是一个多行标签。它也很难看,不能作为主题

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

要使文本小部件看起来与消息小部件相同,应使用以下方法:

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

请给我们一个。同时,当我嵌入这个代码并运行它时,会显示一个垂直滚动条,滚动它确实会上下滚动文本。奇怪。我看不到任何滚动条,而您的代码看起来和我的一样。您将小部件状态设置为“禁用”。