Проблемы с Tkinter При Вызове Другого Сценария

#python #user-interface #tkinter

Вопрос:

У меня возникли некоторые проблемы со школьным проектом. Проект включает в себя запуск кода python на raspberry pi с использованием камеры pi для «обнаружения налета». На самом деле он просто приобретает желтый цвет на фотографиях.

Заранее приношу свои извинения, я абсолютно ничего не знаю о кодировании, поэтому я сделаю все возможное, чтобы описать проблему и предоставить только необходимую информацию.

Я получаю ошибку, когда пытаюсь вызвать один скрипт с помощью кнопки tkinter, но скрипт, который я пытаюсь вызвать, отлично работает сам по себе. Это ошибка, которую я получаю:

 Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.7/tkinter/__init__.py", line 1705, in __call__
    return self.func(*args)
  File "/home/pi/Desktop/PC_working_code/Final.py", line 54, in process
    import seniordesign_colordetect_trial
  File "/home/pi/Desktop/PC_working_code/seniordesign_colordetect_trial.py", line 150, in <module>
    label=tki.Label(window,image=finalimg,width=600, height=450)
  File "/usr/lib/python3.7/tkinter/__init__.py", line 2766, in __init__
    Widget.__init__(self, master, 'label', cnf, kw)
  File "/usr/lib/python3.7/tkinter/__init__.py", line 2299, in __init__
    (widgetName, self._w)   extra   self._options(cnf))
_tkinter.TclError: image "pyimage1" doesn't exist
 

У меня есть один сценарий, который в основном представляет собой графический интерфейс и предварительный просмотр камеры. Этот называется «Final.py». Он вызывает другой скрипт, который выполняет весь анализ, называемый «seniordesign_colordetect_trial.py». Я буду называть это старшим дизайном для простоты.

Финал захватывает картинку с. cappic Затем Final использует кнопку графического интерфейса tkinter для вызова seniordesign. Ниже приведены важные разделы Финала.

     def cappic():
        camera.capture('/home/pi/Desktop/PC_working_code/image.jpg')
        webcam.release()
        img_new = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
        cv2.waitKey(1650)
        cv2.destroyAllWindows()
        img_ = cv2.imread('image.jpg', cv2.IMREAD_ANYCOLOR)
        img_resized = cv2.imwrite(filename='saved_img-final.jpg', img=img_)
    
        
    button1 = tki.Button(window, text="Capture Teeth", height=4, width=30, bg="red", fg="white", 
    relief="solid", font=("arial", 24, "bold"), command=cappic)
    button1.place(x=40, y=600)


    def process():
        camera.stop_preview()
        import seniordesign_colordetect_trial
        camera.start_preview(fullscreen=False, window = (75,100,500,600))

    button2 = tki.Button(window, text="Process Picture", height=4, width=30, bg="red", fg="white",relief="solid", font=("arial", 24, "bold"),command=process) 
    button2.place(x=40, y=800)
 

Раздел seniordesign, вызывающий ошибку, показан ниже. Если я закомментирую ярлык, то он отлично работает, но ярлык-это действительно единственная часть кода, которая важна для того, что мне нужно.

     window=tki.Tk()
    window.title("Results")
    window.geometry("650x1050 0-29")
    window.configure(background='white')
    cv2.imwrite(filename='image.jpg', img=imageFrame)

    finimg=Image.open('/home/pi/Desktop/PC_working_code/image.jpg')
    resizeimg=finimg.resize((600,450),Image.ANTIALIAS)
    finalimg=ImageTk.PhotoImage(resizeimg)

    label=tki.Label(window,image=finalimg,width=600, height=450)
    label.pack()

    def close():
        window.destroy() 

    button1=tki.Button(window, text="Take Another Picture", height=4, width=30, bg="red", fg="white", 
    relief="solid", font=("arial", 24, "bold"), command=close)
    button1.pack()
 

Любая помощь была бы фантастической. Я очень заблудился, и мне не повезло с поиском в Google.

Комментарии:

1. Вы создаете более одного экземпляра Tk ?

2. /home/pi/Desktop/PC_working_code/image.jpg Существует ли, когда вы начинаете бегать? Я вижу, что он захвачен cappic . У вас есть cv2.imwrite(filename='image.jpg'...) , но вы уверены, что находитесь в Desktop папке, когда она запускается?

3. @BryanOakley Мне жаль, но я не знаю, что это значит.

4. @TimRoberts он действительно существует, но у меня были проблемы с перезаписью изображения. Я считаю, что нахожусь в Desktop том, когда это происходит, потому что все, включая изображение, находится в PC_working_code папке

5. Это метка, которая показывает изображение, комментируя его, изображение никогда не используется, и такой ошибки нет. Удалите любого ребенка Tk() и сделайте это Toplevel() . Оставь себе только одну Tk() .