Hello!

Je me suis lancé, "pour le fun", dans la découverte de Python.... et sur à peine 10 lignes de code, je me casse les dents sur 2 problèmes... : je veux me créer un (tout petit) référentiel de quelques pays, stockés dans une table sql (à partir d'un fichier csv), et afficher le contenu dans tkinter.

Mes problèmes:

1) le fetch me retourne bien un tuple par "row" de la table, constitué de 2 strings (code + libellé : voir "print" des valeurs ci-dessous), mais quand j'affiche les tuples dans tkinter, dans le cas d'un pays constitué de plusieurs mots (=Afrique du sud), il semble afficher le libellé comme un dictionnaire (= {Afrique du Sud} ) ? J'aimerais comprendre cette "conversion"?
A noter que cela se passe bien si j'affiche la concaténation des éléments individuels (= ligne en commentaire).

voici le résultat dans tkinter:
Nom : Capture d’écran de 2020-08-31 13-45-14.png
Affichages : 1425
Taille : 6,9 Ko

2) bien que je crois demander un affichage "à gauche", il affiche le tout en "centré" ?

voici le code de l'affichage:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
# -*- coding:Utf8 -*-
 
# #######################################################################
# 
# lecture de la table des pays
# 
# #######################################################################
 
import datetime
import sqlite3
import tkinter as tk
 
connect   = sqlite3.connect("cave_a_vin_01.db")     # création du connecteur à la BDD
curs_pays = connect.cursor()						# création du curseur pays
curs_pays.execute("SELECT pays_code, pays_lib FROM pays ORDER BY pays_lib LIMIT 5")
 
resultats = curs_pays.fetchall()
connect.close()
 
root = tk.Tk()
 
frame = tk.Frame(root, bg="white")
frame.place(relwidth=0.96, relheight=0.96, relx=0.02, rely=0.02)
 
 
i=1
 
for resultat in resultats:
    ligne = resultat
#    ligne = resultat[0] + " " + resultat[1]
    label = tk.Label(frame,text=ligne, bg="white", justify="left")
    label.pack()
 
    print(" ")
    print("resultat :", i, " : ",resultat, " -- ", type(resultat))
    print("0 : ",resultat[0], " -- ", type(resultat[0]))
    print("1 : ",resultat[1], " -- ", type(resultat[1]))
    print("-----------------------------------------------")
    print(" ")
    i=i+1
 
 
root.mainloop()

L'output des "print" dans le shell, où tout semble être ok:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
resultat : 1  :  ('ZA', 'Afrique du Sud')  --  <class 'tuple'>
0 :  ZA  --  <class 'str'>
1 :  Afrique du Sud  --  <class 'str'>
-----------------------------------------------
 
 
resultat : 2  :  ('DE', 'Allemagne')  --  <class 'tuple'>
0 :  DE  --  <class 'str'>
1 :  Allemagne  --  <class 'str'>
-----------------------------------------------
 
 
resultat : 3  :  ('AR', 'Argentine')  --  <class 'tuple'>
0 :  AR  --  <class 'str'>
1 :  Argentine  --  <class 'str'>
-----------------------------------------------
 
 
resultat : 4  :  ('AU', 'Australie')  --  <class 'tuple'>
0 :  AU  --  <class 'str'>
1 :  Australie  --  <class 'str'>
-----------------------------------------------
 
 
resultat : 5  :  ('AT', 'Autriche')  --  <class 'tuple'>
0 :  AT  --  <class 'str'>
1 :  Autriche  --  <class 'str'>
-----------------------------------------------
Merci pour votre aide!!







si besoin: la création de la table:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
# -*- coding:Utf8 -*-
 
# #######################################################################
# 
# init_create_sql_pays01.py
# Création de la table des pays à partir d'un fichier CSV
# 
# #######################################################################
 
# ########## Import External Functions ########################################################
 
import os
import csv
import datetime
import sqlite3
 
# ########## Define Local Functions ###########################################################
 
# ---------- Fonctions -------------------------------------------------------------------------
 
def create_table_pays():
 
	curs_pays.executescript("""
 
                        DROP TABLE IF EXISTS pays;
 
                        CREATE TABLE IF NOT EXISTS pays (
                        pays_code TEXT NOT NULL,
                        pays_lib TEXT NOT NULL,
                        pays_carte TEXT NULL,
                        PRIMARY KEY ([pays_code]))
                """)
 
def fill_table_pays():     # lire enregistrements CSV et les rentrer dans la table SQL
 
	key=0
	os.chdir("/home/papy7584/Programmation/Prog/CAVSimple/Data/20200828")  # workdirectory: contient les données
	sql = """ INSERT INTO pays(pays_code, pays_lib, pays_carte) VALUES(?,?,?) """
 
	with open("pays.csv") as pays_csvfile:
		pays_csv = csv.reader(pays_csvfile, delimiter=',')
		for enr_pays in pays_csv: 
			if enr_pays[0] != "pays_code":									# skip titres
				print(enr_pays[0], " - ", enr_pays)
				print(enr_pays[0]," ",type(enr_pays[0]),len(enr_pays[0]))
				print(enr_pays[1]," ",type(enr_pays[1]),len(enr_pays[1]))
				print(enr_pays[2]," ",type(enr_pays[2]),len(enr_pays[2]))
 
				l = (
					enr_pays[0], 
					enr_pays[1], 
					enr_pays[2])
				curs_pays.execute(sql, l)
 
	connect.commit()
 
# ########## Main #############################################################################
 
connect   = sqlite3.connect("cave_a_vin_01.db")     # création du connecteur à la BDD
curs_pays = connect.cursor()						# création du curseur pays
 
create_table_pays()
fill_table_pays()
 
connect.close()
et le contenu du fichier csv:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cat pays.csv
"pays_code","pays_lib","pays_carte"
"ZA","Afrique du Sud",
"DE","Allemagne",
"AR","Argentine",
"AU","Australie",
"AT","Autriche",
"CL","Chili",
"ES","Espagne",
"FR","France",
"GR","Grèce",
"IT","Italie",
"LU","Luxembourg",
"NZ","Nouvelle-Zélande",
"PT","Portugal",