1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| #!/usr/bin/env python
# -*- coding:UTF-8 -*-
#-------------------------------------------------------------------------------
# Name: module1
# Purpose:
#
# Author: AlienWare
#
# Created: 13/05/2012
# Copyright: (c) AlienWare 2012
# Licence: <your licence>
#-------------------------------------------------------------------------------
import sys
runPython3 = sys.version_info.major > 2
if runPython3:
import tkinter as tk
else:
import Tkinter as tk
from sys import platform
from MyScrollBar import *
class AutoScrollbar(tk.Scrollbar):
"""Scrollbar se masquant automatiquement si inutile."""
def __init__(self, parent = None, **kw):
tk.Scrollbar.__init__(self, parent, **kw)
self.__parent = parent
# self.bind('<Map>',
#def __widgets_orders(self, event):
def set(self, lo, hi):
if float(lo) <= 0.0 and float(hi) >= 1.0:
self.tk.call(self.__manage, 'forget', self._w)
else:
if self.__manage in ('pack', 'place'):
self.tk.call((self.__manage, 'after', self.__widgetsOrders[-1]))
self.tk.call((self.__manage, 'configure', self._w) + self.__geometry)
print(self.__widgetsOrders[-1])
self.nametowidget(self.__widgetsOrders[-1]).insert('end', 'rien')
else:
self.tk.call((self.__manage, 'configure', self._w) + self.__geometry)
tk.Scrollbar.set(self, lo, hi)
def __widget_manage(self, manage = None, cnf = {}, **kw):
self.__manage = manage
self.__geometry = self._options(cnf, kw)
self.__widgetsOrders = self.__parent.tk.call(manage, 'slaves', self.__parent).split(' ')
print(self.__widgetsOrders)
self.tk.call((self.__manage, 'configure', self._w) +
self._options(cnf, kw))
def grid(self, cnf = {}, **kw):
self.__widget_manage('grid', cnf, **kw)
def pack(self, cnf = {}, **kw):
self.__widget_manage('pack', cnf, **kw)
def place(self, cnf = {}, **kw):
self.__widget_manage('place', cnf, **kw)
def main():
def vide_list():
lbx.delete(0, tk.END)
def rempli_list():
for i in range(100):
lbx.insert(tk.END, i)
root = tk.Tk()
frm = tk.Frame(root)
frm.grid(row = 0, column = 0)
lbx = tk.Listbox(frm)
lbx.insert('end', 1)
lbx.insert('end', lbx)
lbx2 = tk.Listbox(frm)
lbx2.insert('end', 2)
lbx2.insert('end', lbx2)
lbx3 = tk.Listbox(frm)
lbx3.insert('end', 3)
lbx3.insert('end', lbx3)
yscroll = AutoScrollbar(frm, command = lbx.yview)
lbx['yscrollcommand'] = yscroll.set
lbx.pack(side = tk.LEFT, expand = tk.YES, fill = tk.BOTH)
lbx2.pack(side = tk.RIGHT, expand = tk.YES, fill = tk.BOTH)
lbx3.pack(side = tk.RIGHT, expand = tk.YES, fill = tk.BOTH)
yscroll.pack(side = tk.RIGHT, expand = tk.YES, fill = tk.Y)
frm1 = tk.Frame(root)
frm1.grid(row = 0, column = 1, sticky = tk.N)
tk.Button(frm1, text = 'vide', command = vide_list, width = 10).grid(row = 0, column = 0, sticky = tk.NW)
tk.Button(frm1, text = 'rempli', command = rempli_list, width = 10).grid(row = 1, column = 0, sticky = tk.NW)
rempli_list()
root.mainloop()
if __name__ == '__main__':
main() |
Partager