簡體   English   中英

Tkinter中消息小部件的滾動條

[英]Scrollbar for Message Widget in Tkinter

我正在嘗試將以前在命令行中編寫的游戲轉換為GUI( https://github.com/abhinavdhere/Share-Trader-PC/releases/tag/v1.0 )我已經建立了一個類似於按鈕結構的菜單在一個框架中,然后單擊“幫助”,上一個框架f1應該消失並顯示幫助文本。 我使用消息小部件來顯示文本,但是它很長,需要滾動條。 我嘗試添加垂直滾動條,但無法使其正常工作。 我提到了python和tkinter:在畫布上使用滾動條並嘗試這樣做,但是它仍然僅顯示消息,而沒有滾動條。 這是它的功能:

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)

PS為什么制作一個簡單的滾動條這么麻煩?

message小部件不支持滾動。 它缺少用於滾動協議的命令yviewxview 它實際上只是一個多行標簽。 它也是丑陋的,不能作為主題。

您應該用text窗口小部件替換message窗口小部件,該text窗口小部件還顯示多行文本,並可以支持使用標簽滾動和格式化文本,以在需要時附加樣式信息。

為了使文本小部件看起來與“消息”小部件相同,應執行以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM