以下是一些简单的代码:
from tkinter import *
from tkinter import ttk
rootwin = Tk()
roomtext = Text(rootwin)
roomtext.pack(side = 'left', fill = "both", expand = True)
rtas = ttk.Scrollbar(roomtext, orient = "vertical", command = roomtext.yview)
rtas.pack(side = "right" , fill = "both")
roomtext.config(yscrollcommand = rtas.set)
rootwin.mainloop()
因此,默认scrollbar
会立即出现。
如果输入的文本大于文本区域,如何才能显示scrollbar
?
因此,当我运行代码时,首先,scrollbar
必须不显示。然后,当输入足够的文本时scrollbar
显示(即roomtext
中的文字长于roomtext
区域)。
答案 0 :(得分:2)
也许这个代码就是你要找的东西(因为我对它更熟悉所以改为打包到网格......如果你愿意的话,你应该能够轻松地恢复它):
from tkinter import *
from tkinter import ttk
rootwin = Tk()
roomtext = Text(rootwin)
roomtext.grid(column=0, row=0)
def create_scrollbar():
if roomtext.cget('height') < int(roomtext.index('end-1c').split('.')[0]):
rtas = ttk.Scrollbar(rootwin, orient = "vertical", command = roomtext.yview)
rtas.grid(column=1, row=0, sticky=N+S)
roomtext.config(yscrollcommand = rtas.set)
else:
rootwin.after(100, create_scrollbar)
create_scrollbar()
rootwin.mainloop()
它检查是否需要每秒创建一次滚动条10次。 通过一些额外的更改,您甚至可以在不再需要时删除滚动条(文本太短):
from tkinter import *
from tkinter import ttk
rootwin = Tk()
roomtext = Text(rootwin)
roomtext.grid(column=0, row=0)
rtas = ttk.Scrollbar(rootwin, orient = "vertical", command = roomtext.yview)
def show_scrollbar():
if roomtext.cget('height') < int(roomtext.index('end-1c').split('.')[0]):
rtas.grid(column=1, row=0, sticky=N+S)
roomtext.config(yscrollcommand = rtas.set)
rootwin.after(100, hide_scrollbar)
else:
rootwin.after(100, show_scrollbar)
def hide_scrollbar():
if roomtext.cget('height') >= int(roomtext.index('end-1c').split('.')[0]):
rtas.grid_forget()
roomtext.config(yscrollcommand = None)
rootwin.after(100, show_scrollbar)
else:
rootwin.after(100, hide_scrollbar)
show_scrollbar()
rootwin.mainloop()