Problème tkinder et camera

Résolu
sousou_84 Messages postés 2 Date d'inscription samedi 4 mars 2023 Statut Membre Dernière intervention 4 mars 2023 - Modifié le 4 mars 2023 à 20:34
sousou_84 Messages postés 2 Date d'inscription samedi 4 mars 2023 Statut Membre Dernière intervention 4 mars 2023 - 4 mars 2023 à 20:20

Bonjour, je suis en train de coder un logiciel simpliste avec tkinder.

Je bloque sur la façon de creer un listbox qui liste les cameras disponibles.

Je cherche la méthode la plus simple pour le faire.

J'ai codé cette fonction mais sa ne marche pas correctement, je ne sais pas si je dois lui donner un argument ou pas. 

[code]

 
def lister_camera(source):
    # Liste des numéros de caméra disponibles
    camera_indexes = []
    for i in range(10):
        cap = cv2.VideoCapture(i)
        if cap.isOpened():
            camera_indexes.append(i)
            cap.release()

    # Ajout de la liste des caméras à la fenêtre
    if camera_indexes:
        label2 = source.Label(source, text="Caméras disponibles : ")
        label2.pack()

        camera_listbox = source.Listbox(source)
        for index in camera_indexes:
            camera_listbox.insert(source.END, f"Caméra {index}")
        camera_listbox.pack()
    else:
        label3 = source.Label(source, text="Aucune caméra disponible")
        label3.pack()

[/code]

Mon code complet:

[code]

 
from tkinter import *
import cv2

def create():
    source = Toplevel(root)
    source.geometry('400x400')
    mylabel = Label(source,text = 'test')
    mylabel.pack(pady=10)

   #liste2 = Listbox(source)
    #liste2.insert(1, "Blue")
    #liste2.pack()
    lister_camera(source)


def lister_camera(source):
    # Liste des numéros de caméra disponibles
    camera_indexes = []
    for i in range(10):
        cap = cv2.VideoCapture(i)
        if cap.isOpened():
            camera_indexes.append(i)
            cap.release()

    # Ajout de la liste des caméras à la fenêtre
    if camera_indexes:
        label2 = source.Label(source, text="Caméras disponibles : ")
        label2.pack()

        camera_listbox = source.Listbox(source)
        for index in camera_indexes:
            camera_listbox.insert(source.END, f"Caméra {index}")
        camera_listbox.pack()
    else:
        label3 = source.Label(source, text="Aucune caméra disponible")
        label3.pack()


def hello():
    print("hello world!")


root = Tk()
root.geometry('400x500')
btn = Button(root, text="Source", command = create)
btn.pack(pady = 10)


# créer un menu
menubar = Menu(root)
# créer un sous-menu
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=hello)
filemenu.add_command(label="Open", command=hello)
filemenu.add_command(label="Save", command=hello)
menubar.add_cascade(label="File", menu=filemenu)
menubar.add_command(label="Quit!", command=root.quit)

root.config(menu=menubar)
root.mainloop()

[/code]

1 réponse

sousou_84 Messages postés 2 Date d'inscription samedi 4 mars 2023 Statut Membre Dernière intervention 4 mars 2023
Modifié le 4 mars 2023 à 20:35

J'ai trouvé le problème:

Le code corrigé:

 
from tkinter import *
import cv2

def create():
    source = Toplevel(root)
    source.geometry('400x400')
    mylabel = Label(source,text = 'test')
    mylabel.pack(pady=10)

   #liste2 = Listbox(source)
    #liste2.insert(1, "Blue")
    #liste2.pack()
   # lister_camera(source)
    camera_indexes = []
    for i in range(10):
        cap = cv2.VideoCapture(i)
        if cap.isOpened():
            camera_indexes.append(i)
            cap.release()

    # Ajout de la liste des caméras à la fenêtre
    if camera_indexes:
        mylabel2 = Label(source, text="Caméras disponibles : ")
        mylabel2.pack()

        camera_listbox = Listbox(source)
        for index in camera_indexes:
            camera_listbox.insert(index, f"Caméra {index}")
        camera_listbox.pack()
    else:
        mylabel3 = Label(source, text="Aucune caméra disponible")
        mylabel3.pack()







def hello():
    print("hello world!")


root = Tk()
root.geometry('400x500')
btn = Button(root, text="Source", command = create)
btn.pack(pady = 10)


# créer un menu
menubar = Menu(root)
# créer un sous-menu
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=hello)
filemenu.add_command(label="Open", command=hello)
filemenu.add_command(label="Save", command=hello)
menubar.add_cascade(label="File", menu=filemenu)
menubar.add_command(label="Quit!", command=root.quit)

root.config(menu=menubar)
root.mainloop()
0
Rejoignez-nous