Advanced Widgets
Text
from tkinter import *
root = Tk()
text = Text(root, width = 40, height = 10)
text.pack()
text.config(wrap = 'word')
>>> text.get('1.0', 'end') 'dsadads\ndassaddsadads\ndassad\ndsadads\ndassad\n\n\n\n\n\ndsfs\ndsfsf\nsdfsdfsdfsddddddddddddd\nsfsdddddddddddd\nsfsfsdf\nsdfsklkjfajdlsjfldsjfldjlfjsljj fdjsjf box test\n' >>> text.get('1.0', '1.end') 'dsadads' >>> text.insert('1.0 + 2 lines', 'Inserted message') >>> text.insert('1.0 + 2 lines lineend', 'and\nmore and\nmore...') >>> text.delete('1.0') >>> text.delete('1.0', '1.0 lineend') >>> text.delete('1.0', '3.0 lineend + 1 chars') >>> text.replace('1.0', '1.0 lineend', 'This is the first line.') >>> text.config(state = 'disabled') >>> text.delete('1.0', 'end') >>> text.config(state = 'normal')
Tag & Mark
- Tag
text.tag_add('my_tag', '1.0', '1.0 wordend') text.tag_configure('my_tag', background = 'yellow') text.tag_remove('my_tag', '1.1', '1.3')
text.tag_ranges('my_tag') text.tag_names() >>> text.tag_names('1.0') ('my_tag',) >>> text.replace('my_tag.first', 'my_tag.last', 'That') >>> text.tag_delete('my_tag')
- Mark
Automatically Tracked Text Marks insert - current index of onsertion cursor current - index of character under mouse position
text.mark_names()
# ('insert', 'current', 'tk:anchor1')
text.insert('insert', '_')
text.mark_set('my_mark', 'end')
text.mark_gravity('my_mark', 'right')
text.mark_unset('my_mark')
- Image & Button
>>> image = PhotoImage(file = 'C:\\Users\\~\\logo.gif')
>>> text.image_create('insert', image = image)
'pyimage1'
button = Button(text, text = 'Click Me')
text.window_create('insert', window = button)
Tree View
#!/usr/bin/python3
# template.py by Barron Stone
# This is an exercise file from Python GUI Development with Tkinter on lynda.com
from tkinter import *
from tkinter import ttk
root = Tk()
treeview = ttk.Treeview(root)
treeview.pack()
treeview.insert('', '0', 'item1', text = 'First Item')
treeview.insert('', '1', 'item2', text = 'Second Item')
treeview.insert('', 'end', 'item3', text = 'Third Item')
logo = PhotoImage(file = 'D:\Cloud\Dropbox\Workplace\pytest\Tkinter\Ex_Files_Python_Tkinter\Ex_Files_Python_Tkinter\Exercise Files\Ch05\\python_logo.gif').subsample(10,10)
treeview.insert('item2', 'end', 'python', text = 'Python', image = logo)
treeview.config(height = 5)
treeview.move('item2', 'item1', 'end')
treeview.item('item1', open = True)
treeview.item('item2', open = True)
print(treeview.item('item1', 'open'))
treeview.detach('item3')
treeview.move('item3', 'item2', '0')
treeview.delete('item3')
treeview.configure(column = ('version'))
treeview.column('version', width = 50, anchor = 'center')
treeview.column('version', width = 50, anchor = 'center')
treeview.column('#0', width = 150)
treeview.heading('version', text = 'Version')
treeview.set('python', 'version', '3.4')
treeview.item('python', tags = ('software'))
treeview.tag_configure('software', background = 'yellow')
def callback(event):
print(treeview.selection())
treeview.bind('<<TreeviewSelect>>', callback)
treeview.config(selectmode = 'browse')
print(treeview.selection_add('python'))
print(treeview.selection_remove('python'))
print(treeview.selection_toggle('python'))
root.mainloop()
Menu
from tkinter import *
from tkinter import ttk
root = Tk()
root.option_add('*tearOff', False)
menubar = Menu(root)
root.config(menu = menubar)
file = Menu(menubar)
edit = Menu(menubar)
help_ = Menu(menubar)
menubar.add_cascade(menu = file, label = 'File')
menubar.add_cascade(menu = edit, label = 'Edit')
menubar.add_cascade(menu = help_, label = 'Help')
file.add_command(label = 'New', command = lambda: print('New File'))
file.add_separator()
file.add_command(label = 'Open...', command = lambda: print('Opening File...'))
file.add_command(label = 'Save', command = lambda: print('Saving File...'))
file.entryconfig('New', accelerator = 'Ctrl+N')
logo = PhotoImage(file = 'C:\\Users\\barron\\Dropbox\\Lynda Courses\\Python GUI Development with Tkinter\\Exercise Files - Current\\03 Widget Classes\\python_logo.gif').subsample(10, 10)
file.entryconfig('Open...', image = logo, compound = 'left')
file.entryconfig('Open...', state = 'disabled')
file.delete('Save')
save = Menu(file)
file.add_cascade(menu = save, label = 'Save')
save.add_command(label = 'Save As',command = lambda: print('Saving As...'))
save.add_command(label = 'Save All', command = lambda: print('Saving All...'))
choice = IntVar()
edit.add_radiobutton(label = 'One', variable = choice, value = 1)
edit.add_radiobutton(label = 'Two', variable = choice, value = 2)
edit.add_radiobutton(label = 'Three', variable = choice, value = 3)
file.post(400, 300)
root.mainloop()