Scrollbar en X

Résolu
eXe76000 Messages postés 4 Date d'inscription lundi 26 février 2024 Statut Membre Dernière intervention 26 février 2024 - 26 févr. 2024 à 13:50
 XCode - 26 févr. 2024 à 17:49

Bonjour a tous,

je suis en train de terminer mon script en python de génération de mail automatique en fonction de quelques variables.

Tout fonctionne a merveille et j'ai voulu ajouter 2 scrollbar a mon tk.Text afin de ne pas avoir une trop grosse fenêtre.

la scrollbarY fonctionne parfaitement mais pour la X c'est une autre histoire.

mon texte se réorganise et fait des sauts a la ligne tout seul.

auriez vous une idée pour contrer cela?

voici mon code:

import tkinter as tk

def copy_text_generated():
    contain=text_generated.get(1.0,tk.END)
    text_generated.clipboard_append(contain)

def generate_and_insert_message():
     
    msg_structure = [
            "Bonjour ",label_c.get(tk.ACTIVE)," ",entry_name.get(),
            ",\n\n",
            "Votre ",entry_desc_ot.get()," a été retrouvé(e).",
            "\n\n",
            "Pour récupérer celui-ci, une taxe de restitution d'un montant de ", entry_tax_amount.get(), " € vous sera demandé.",
            "\n\n",
            "2 solutions s'offrent ensuite à vous pour récupérer votre ",entry_desc_ot.get(),".",
            "\n\n",
            "\t","-Vous pouvez venir le chercher directement au service objets trouvés.",
            "\n\t","-Demander l'expédition de votre ", entry_desc_ot.get()," à votre adresse.",
            "\n\t\t","Pour cela il faudra nous fournir:",
            "\n\t\t\t","-Une photocopie de votre pièce d'identité.",
            "\n\t\t\t","-Un chèque de XXX correspondant au frais d'expéditions.",
            "\n\t\t\t","-Un chèque de XXX correspondant aux frais de restitution.",
            "\n\t\t\t","Merci de préciser dans le courrier la référence de l'objet N°",entry_num_ot.get()," afin de facilité notre tâche d'association des chèques à l'objet lui-même.",
            "\n\t\t\t","-L'adresse complète à laquelle envoyer l'objet.",
            "\n\t\t","Le tout à l'adresse suivante :",
            "\n\t\t\t","XXXX",
            "\n\t\t\t","XXXX",
            "\n\t\t\t","XXXX",
            "\n\t\t\t","XXXX",
            "\n\t\t","Après réception de ceux-ci votre ", entry_desc_ot.get(), " pourra être expédier si vous choisissez cette deuxième option.",
            "\n\n",
            "\n Bonne journée à vous.",
            "\n",
            "Cordialement."]
    
    text_generated.delete(1.0, tk.END)
    text_generated.insert("1.0", "".join(value for value in msg_structure))

fenetre = tk.Tk()

fenetre.title("OT")
fenetre.geometry("400x550")

label_c = tk.Label(fenetre, text="Civilité : ")
label_c.grid(column=0, row=1, sticky="e", pady=2)
label_c = tk.Listbox(fenetre, width=31, height=0)
label_c.grid(column=1, row=1, columnspan=2)
for item in ["Madame", "Monsieur"]:
    label_c.insert(tk.END, item)
 
label_name = tk.Label(fenetre, text="Nom : ")
label_name.grid(column=0, row=3, sticky="e", pady=2)
entry_name = tk.Entry(fenetre, width=31)
entry_name.grid(column=1, row=3, columnspan=2)
 
label_desc_ot = tk.Label(fenetre,text="Description OT : ",)
label_desc_ot.grid(column=0, row=4, sticky="e", pady=2)
entry_desc_ot = tk.Entry(fenetre, width=31)
entry_desc_ot.grid(column=1, row=4, columnspan=2)
 
label_num_ot = tk.Label(fenetre, text="Numéro de l'OT : ")
label_num_ot.grid(column=0, row=5, sticky="e", pady=2)
entry_num_ot = tk.Entry(fenetre, width=31)
entry_num_ot.grid(column=1, row=5, columnspan=2)
 
label_tax_amount = tk.Label(fenetre, text="Montant de la taxe : ")
label_tax_amount.grid(column=0, row=6, sticky="e", pady=2)
entry_tax_amount = tk.Entry(fenetre, width=31)
entry_tax_amount.grid(column=1, row=6, columnspan=2)
 
label_generated_text = tk.Label(fenetre, text="Texte généré : ")
label_generated_text.grid(column=0, row=12, sticky="nw", pady=2)

# Création de la barre de défilement
scrollbar_y = tk.Scrollbar(fenetre)
scrollbar_y.grid(column=2, row=12, sticky='ns')

scrollbar_x = tk.Scrollbar(fenetre, orient='horizontal')
scrollbar_x.grid(column=1, row=13, sticky='ew')

# Modification du widget Text pour utiliser la barre de défilement
text_generated = tk.Text(fenetre, height=20, width=30, yscrollcommand=scrollbar_y.set, xscrollcommand=scrollbar_x.set)
text_generated.grid(column=1, row=12)

# Configuration de la barre de défilement pour qu'elle défile le widget Text
scrollbar_y.config(command=text_generated.yview)
scrollbar_x.config(command=text_generated.xview)

but_copy = tk.Button(fenetre, text="Copier le texte généré", command=copy_text_generated, width=30)
but_copy.grid(column=1, row=11, columnspan=2, pady=2)
 
but_generate_text = tk.Button(fenetre, text="Générer", command=generate_and_insert_message, width=30)
but_generate_text.grid(column=1, row=10, columnspan=2, pady=2)
 
entry_name.focus_set()

fenetre.mainloop()
A voir également:

2 réponses

Salut,

Il faut ajouter le paramètre wrap="none" dans tk.Text()

text_generated = tk.Text(fenetre, height=20, width=30, wrap="none", yscrollcommand=scrollbar_y.set, xscrollcommand=scrollbar_x.set)
1
eXe76000 Messages postés 4 Date d'inscription lundi 26 février 2024 Statut Membre Dernière intervention 26 février 2024
26 févr. 2024 à 17:18

oh super merci je ne savais pas... c'etait si simple au final... merci beaucoup !

0

Oui, on aurait aussi pu mettre :

wrap=tk.NONE
0