長い文字列の 1 つ以上の反復をテキスト フィールドにロードする小さなプログラムがあります。非常に長いテキスト文字列を移動できるように、水平スクロールバーを設定しました。テキストウィジェットとスクロールバーの間にすべての設定ができていると思います(少なくとも、動作する垂直スクロールバー用に持っている他のコードのように見えます)が、スクロールバーが非アクティブになっているようです。テキストがいくら長くなっても、基本的には機能しません。
水平スクロールバーを除いて、このコードに関する他のすべてが機能しているように見えます。
私は何を間違っていますか?スクロールバーをオフにするコードの何かが他にありますか?
import tkinter as tk
from tkinter import messagebox
win=tk.Tk()
text=tk.Text(win, height=1, font='Helvetica 12')
text.pack(side='top', padx=5, pady=5,fill='x')
text.tag_configure('bold', font='Helvetical 12 bold', foreground='red')
hscroll=tk.Scrollbar(win, orient='horizontal',command=text.xview)
hscroll.pack(side='top',fill='x')
text.configure(xscrollcommand=hscroll.set)
text.configure(state='normal')
x='(<data field> == <literal>) and ((<data field> == <data field>) or (<data field> == <data field>))'
def insert_characters():
global x
text.configure(state='normal')
text.insert('end', x)
content=text.get("1.0","end-1c")
messagebox.showinfo('',len(content))
def delete_characters():
text.configure(state='normal')
text.delete('1.0','1.500')
text.configure(state='disabled')
def get_field_list(string):
field_list=[]
for i in range(len(string)):
if string[i]=='<':
start=i
elif string[i]=='>':
stop=i
field_list.append((start, stop))
else:
continue
return field_list
def highlight_fields(field_list):
for f in field_list:
start='1.{0}'.format(f[0])
stop='1.{0}'.format(f[1]+1)
text.tag_add('highlight', start, stop)
text.tag_configure('highlight',background='yellow',
font='Helvetica 12 bold')
messagebox.showinfo('',start+'\n'+stop)
text.tag_delete('highlight')
def do_highlights():
global x
field_list=get_field_list(x)
highlight_fields(field_list)
insertButton=tk.Button(win, text='Insert',
command=insert_characters)
insertButton.pack(side='bottom', padx=5, pady=5)
deleteButton=tk.Button(win, text='Delete',
command=delete_characters)
deleteButton.pack(side='bottom', padx=5, pady=5)
highlightButton=tk.Button(win, text='Highlight',
command=do_highlights)
highlightButton.pack(side='bottom', padx=5, pady=5)
win.mainloop()