IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Interface graphique Tkinter/mysql


Sujet :

Tkinter Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 33
    Points : 31
    Points
    31
    Par défaut Interface graphique Tkinter/mysql
    Bonjour,

    je suis en train de créer une interface graphique avec Tkinter qui reprends des données de ma bdd mysql.

    Mon premier problème est dans ma manière de récupérer mes données (lignes 29-31) et de les insérer dans une combobox (ça me renvois les valeurs comme ça :
    [('Aliments
    et
    boissons
    à
    base
    de
    végétaux',),
    ("Aliments
    d'origine
    végétale",), ........

    au lieu de :

    Aliments et boissons à base de végétaux
    Aliments d'origine végétale
    ....


    Et je cherche en ce moment le moyen d'afficher les produits sous ma combobox, de la catégorie sélectionnée dans ma combobox mais je ne trouve pas de widget pour ça (a part listbox (ligne 33-37), mais je ne suis pas sur que ça soit adapté) donc si vous pouvez m'aiguiller ça m'aiderait sinon je continu a chercher quand même.

    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
     
    from tkinter import *
    import tkinter as tk
    from tkinter import tix, ttk
    import mysql.connector
     
     
    #creation window
    window = tk.Tk()
     
    #format window
    window.title("Database OpenFoodFact") 
    window.geometry("950x400")
     
    lst = ["1", "2"]
     
    def __inti__(self):
    	second_window()
     
    def second_window():
    	second_window = tk.Toplevel(window, bg = "#FAFAFA")
    	second_window.geometry("920x400")
    	labelCategory = tk.Label(second_window, text = "Catégories : ", bg = "#FAFAFA").grid(row=0, column=1)
    	MYSQL_USER = '***'
    	MYSQL_HOST = '***'
    	MYSQL_PWD = '***'
    	MYSQL_DATABASE = '****'
    	connexion_data_base = mysql.connector.connect(user=MYSQL_USER, password=MYSQL_PWD, host=MYSQL_HOST, database=MYSQL_DATABASE)
    	cursor = connexion_data_base.cursor()
    	cursor.execute(" SELECT category FROM Category")
    	data = str(cursor.fetchall())
    	comboExample = ttk.Combobox(second_window, values=data, width=30).grid(row=1, column=1, padx=50, pady=10)
    	cursor.execute(" SELECT food FROM Food")
    	food = str(cursor.fetchall())
    	listbox = Listbox(second_window).grid(row=2, column=2)
    	for i in range(11):
    		listbox.insert(food)
    	cursor.close()
    	#labelDescription = tk.Label(second_window, text = "Description")
    	second_window.mainloop()
     
     
    #creation title
    label_title = Label(window, text="Bienvenue dans la base de donnée OpenFoodFacts", font=("Helvetica", 40), fg="#41B77F").pack()
     
    #creation image
    width = 300
    height = 300
    image = PhotoImage(file="/Users/macbookair/Documents/Projet_5/PureBeurre/openfoodfacts-logo-fr-178x150.png")
    canvas = Canvas(window, width=width, height=height)
    canvas.create_image(width/2, height/2, image=image)
    canvas.pack()
     
    #creation button
    button_connect = tk.Button(window, text="Trouver un aliment à remplacer", command=second_window).pack(side=LEFT, padx = 100)
    button_connect2 = tk.Button(window, text="Retrouver mes aliments substitués").pack(side=RIGHT, padx = 100)
     
    # print window
    window.mainloop()

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Vous avez sur tkdocs une présentation de la plupart des widgets avec des exemples de code.
    Treeview pourrait être "plus adapté".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 33
    Points : 31
    Points
    31
    Par défaut
    Merci pour ta réponse.
    J'ai lu la doc treeview et je vois vraiment pas les fonctions que je cherche.
    En fait dans ma bdd j'ai trois table(category_food, food, substitute).
    Dans ma combobox j'y ai inséré ma table category_food, et je souhaiterais, lorsque je click sur ma première category dans la combox ça m'affiche en dessous dans une listbox des aliments(food)


    Jusqu'a ma variable comboExample cava, mais après ça se gate ...
    ps : j'ai réglé mon premier problème
    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
     
    	second_window = tk.Toplevel(window, bg = "#FAFAFA")
    	second_window.geometry("920x400")
    	labelCategory = tk.Label(second_window, text = "Catégories : ", bg = "#FAFAFA").grid(row=0, column=0)
    	connexion_data_base = mysql.connector.connect(user=MYSQL_USER, password=MYSQL_PWD, host=MYSQL_HOST, database=MYSQL_DATABASE)
    	cursor = connexion_data_base.cursor()
    	cursor.execute(" SELECT category FROM Category ORDER BY category ASC")
    	data = cursor.fetchall()
    	data = [d[0] for d in data] 
    	comboExample = ttk.Combobox(second_window, values=data, width=30).grid(row=0, column=1)
    	cursor.execute(" SELECT food FROM Food, Category")
    	food = str(cursor.fetchall())
    	food= [d[0] for d in food]
    	listbox = Listbox(second_window, selectioncommande=data[], values=food).grid(row=2, column=3)
     
    	cursor.close()
    	#labelDescription = tk.Label(second_window, text = "Description")
    	second_window.mainloop()

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par mac79 Voir le message
    Jusqu'a ma variable comboExample cava, mais après ça se gate ...
    Si comboExample affiche une sélection, il faut déjà attendre que l'utilisateur ait choisi quelque chose avant d'aller chercher les données correspondantes...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 33
    Points : 31
    Points
    31
    Par défaut
    ComboExample n'affiche pas ma sélection, il m'affiche un liste des mes catégories.

    Je cherche un moyen de récupérer l'index de ma category en clichant sur ma category dans ma combobox

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par mac79 Voir le message
    Je cherche un moyen de récupérer l'index de ma category en clichant sur ma category dans ma combobox
    Certes mais je ne vais pas vous expliquer comment fonctionne tkinter ni comment faire des requêtes SQL: on a écrit des tutos pour m'éviter çà

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Python 3.X] Client Socket avec interface graphique Tkinter
    Par mohan dans le forum Tkinter
    Réponses: 4
    Dernier message: 19/07/2016, 12h48
  2. [Python 3.X] Client Socket avec interface graphique Tkinter
    Par mohan dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 17/07/2016, 16h38
  3. Problème avec mon interface graphique Tkinter
    Par SamirIV dans le forum Tkinter
    Réponses: 0
    Dernier message: 09/05/2014, 21h08
  4. Réponses: 4
    Dernier message: 02/05/2014, 20h23
  5. interface graphique pour mysql
    Par dalhia dans le forum Outils
    Réponses: 3
    Dernier message: 06/08/2007, 13h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo