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
|
#coding:utf-8
import os
from typing import Dict, List
import tkinter as tk
# Créez une fenêtre racine
root = tk.Tk()
# Créez un widget texte
text = tk.Text(root, height=1, width=20)
text.pack()
# Insérez du texte dans le widget
text.insert(tk.END, "Texte au-dessus du tableau")
# Créez un widget Canvas avec une barre de défilement
canvas = tk.Canvas(root, borderwidth=0, background="#ffffff")
frame = tk.Frame(canvas, background="#ffffff")
vsb = tk.Scrollbar(root, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=vsb.set)
# Placez le Canvas et la Scrollbar dans la fenêtre
vsb.pack(side="right", fill="y")
canvas.pack(side="left", fill="both", expand=True)
canvas.create_window((4,4), window=frame, anchor="nw", tags="frame")
# Créez 5 colonnes de cases à remplir
columns = []
for i in range(5):
column = []
for j in range(180):
# Créez une case à remplir et ajoutez-la à la colonne en cours
cell = tk.Entry(frame, width=10, justify=tk.CENTER)
cell.grid(row=j, column=i)
column.append(cell)
# Ajoutez la colonne à la liste de colonnes
columns.append(column)
# Ouvrez le fichier texte et lisez chaque ligne
with open("USA commande2.txt", "r") as f:
lines = f.readlines()
# Pour chaque ligne, remplissez les cases de chaque colonne avec les valeurs de la ligne
for i, line in enumerate(lines):
values = line.split()
for j, value in enumerate(values):
columns[j][i].insert(0, value)
# Définissez une fonction de mise à jour de la zone affichée du Canvas
def update_view(event):
# Obtenez la hauteur de la zone affichée du Canvas
canvas_height = event.height
# Obtenez la hauteur totale du contenu du Canvas
canvas_total_height = canvas.bbox("all")[3]
# Obtenez les coordonnées y minimum et y maximum du contenu du Canvas
# Obtenez les coordonnées y minimum et y maximum du contenu du Canvas
y_min, y_max = canvas.yview()
# Calculate the proportion of the visible area
visible_proportion = (y_max - y_min) / (canvas_height / canvas_total_height)
# Set the scroll region to match the visible area
canvas.configure(scrollregion=(0, -canvas_height + canvas_total_height, 0, canvas_total_height))
# Set the position of the vertical scrollbar
vsb.set(event.x, event.x + visible_proportion)
# Associez la fonction update_view à l'événement <Configure> du Canvas
canvas.bind("<Configure>", update_view)
# Exécutez la boucle principale de Tkinter
root.mainloop() |
Partager