如何将图像插入文本小部件Tkinter

时间:2019-05-26 08:29:35

标签: python tkinter

我创建了一个用于测试的小型应用程序,但是遇到了在Tkinter 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

在未选中checkbutton的情况下,我希望显示的图像如下:

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()

0 个答案:

没有答案