как вставить изображение в текстовый виджет Tkinter - PullRequest
0 голосов
/ 26 мая 2019

Я создал небольшое приложение для тестирования, но у меня возникла проблема с отображением изображения в содержимом виджета Tkinter Text.

На самом деле у меня есть два изображения, и я хочу, чтобы это было, кроме одного из них.которые должны отображаться в содержимом в соответствии с состоянием кнопки

Вот два изображения, которые я хотел бы, чтобы они отображались в Text tkinter:

http://img4.imagetitan.com/img.php?image=19_6dv6.png

или

http://img4.imagetitan.com/img.php?image=19_mj72.png

И это в зависимости от состояния флажка (флажок или не отмечен)

Если флажок отмечен, я бы хотел, чтобы дисплей был похожэто изображение:

http://img4.imagetitan.com/img.php?image=19_n2z7.png

И в случае, когда кнопка не отмечена, я бы хотел, чтобы дисплей был похож на это изображение:

http://img4.imagetitan.com/img.php?image=19_6f44.png

И так далее, данные будут изменены в соответствии с полем ввода, предназначенным для введения данных монитора.В конце я бы разделил содержимое на несколько абзацев, каждый из абзацев имеет изображение заголовка 1 или изображение 2 в соответствии с состоянием кнопки

Вот код моего приложения с python 3.6:

#!/usr/bin/python3
# -*- coding: utf-8 -*-

from tkinter import *
import pathlib  #pour creer un dossier qui n'existe encore pas 
import sqlite3
import time
import datetime

root = Tk()

case_correction_ddm=IntVar()
ent_monitor_cev=StringVar()



#fonction pour la creation de la table cev
def CreerTable_cev():

    #creation du dossier "bdd/Test" pour la bdd test.db
    pathlib.Path('bdd/Test').mkdir(parents=True, exist_ok=True)

    conn1 = sqlite3.connect('bdd/Test/Test.db')
    curseur1 = conn1.cursor()
    curseur1.execute('''CREATE TABLE IF NOT EXISTS cev (id_cev INTEGER PRIMARY KEY,time_cev TEXT NOT NULL,lecture_monitor_cev    TEXT NOT NULL,chemin_vers_image_message_cev TEXT NOT NULL)''')
    curseur1.close()


# ajout des valeurs à la table cev par la commande du bouton "Executer"
def Add_To_Table_cev():
    global chemin_image_message_cev_get

    if case_correction_ddm.get () :
        chemin_image_message_cev_get='images/correction_approuvee.gif'
    else:   
        chemin_image_message_cev_get='images/correction_non_approuvee.gif'

    time_cev_get = str(time.strftime('%d/%m/%y  à  %H:%M:%S', time.localtime()))
    lecture_monitor_cev_get = str(ent_monitor_cev.get())    

    conn2 = sqlite3.connect('bdd/Test/Test.db')
    curseur2 = conn2.cursor()
    curseur2.execute('''INSERT INTO cev (time_cev,lecture_monitor_cev,chemin_vers_image_message_cev) VALUES (?,?,?)''',(time_cev_get,lecture_monitor_cev_get,chemin_image_message_cev_get))
    conn2.commit()
    curseur2.close()


# lecture du contenu de la table cev
def AfficherTable_cev():

    T_cev.delete('1.0', END)
    T_cev.update()

    conn3 = sqlite3.connect('bdd/Test/Test.db')
    curseur3 = conn3.cursor()     
    for resultats_cev in curseur3.execute('SELECT * FROM cev ORDER BY id_cev DESC'): 

        indice1_modifie=str(resultats_cev[1]).center(70)

        chaine_etoile="*************************************************************************************\n"

        contenu_table_cev= str(indice1_modifie)+"\n\n"+"ddm lue par Monitor  : "+ str(resultats_cev[2])+"\n\n"
        #chemin de l'image est donne par str(resultats_cev[3])
        photo=PhotoImage(file=str(resultats_cev[3]))
        T_cev.insert(INSERT, chaine_etoile)  
        T_cev.image_create(INSERT, image=photo)                
        T_cev.insert(END,contenu_table_cev) 

    curseur3.close()

#appel a la creation de la table cev
CreerTable_cev()

S_cev = Scrollbar(root)
T_cev = Text(root, height=25, width=90)
S_cev.pack(side=RIGHT, fill=Y)
T_cev.pack(side=LEFT, fill=Y)
S_cev.config(command=T_cev.yview)
T_cev.config(yscrollcommand=S_cev.set)

# affichage du contenu de la table cev
AfficherTable_cev()


entry_lecture_monitor=Entry(root,textvariable=ent_monitor_cev,font=('arial',12,'bold'))
entry_lecture_monitor.pack(side=BOTTOM,pady=10 )

bouton_executer=Button(root,text='Executer',command=lambda:[Add_To_Table_cev(),AfficherTable_cev()])
bouton_executer.pack(side=BOTTOM )

case_correction=Checkbutton(root,fg='black',variable=case_correction_ddm)
case_correction.configure(text="confirmation")
case_correction.pack(side=BOTTOM)

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...