#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()
.