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