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
| # coding=UTF-8
from tkinter import ttk
from tkinter import * #pour créer des boutons, des champs d'entrée,...
from tkinter.ttk import * #to create notebook
root = Tk()
nb = Notebook(root)
# adding Frames as pages for the ttk.Notebook
# first page, which would get widgets gridded into it
p1 = Frame(nb)
p2 = Frame(nb)
nb.add(p1, text='page 1')
nb.add(p2, text='page 2')
def create_button():
for i in range(int(_num.get())): #give the number write in Spinbox
Button(_frame,text='texte').grid(column=1,row=line+2+i) #create as many buttons as number chosen in Spinbox
#scroll bar
vsb = Scrollbar(p2, orient=VERTICAL)
vsb.grid(column=1, row=2,sticky=N+S)
hsb = Scrollbar(p2, orient=HORIZONTAL)
hsb.grid(column=0, row=3, sticky=E+W)
#canvas
canvas = Canvas(p2,yscrollcommand=vsb.set, xscrollcommand=hsb.set)
canvas.grid(column=0, row=2, sticky="news")
vsb.config(command=canvas.yview)
hsb.config(command=canvas.xview)
# make the canvas expandable
p2.grid_rowconfigure(0, weight=1)
p2.grid_columnconfigure(0, weight=1)
_frame=Frame(canvas) #create a frame to add widgets
_frame.rowconfigure(1, weight=1)
_frame.columnconfigure(1, weight=1)
line=0
_num=StringVar()
_num.set('30')
Spinbox(_frame,from_=0,to=50,textvariable=_num,command=create_button).grid(column=1,row=line+1) #the number give the number of buttons
#
canvas.create_window(0, 0,window=_frame)
_frame.update_idletasks()
canvas.config(scrollregion=canvas.bbox("all"))
#
nb.grid(column=0,row=0,sticky='nsew')
root.mainloop() |
Partager