0 امتیاز

من وقتی یک toplevel می سازم و می خواهم یک button یا frame و ... روش بزارم خطای 

_tkinter.TclError: can't invoke "label" command: application has been destroyed 

برای مثال این جا خواستم یک label بسازم و این کدش بوده :

    page_add = Toplevel(bg=bg_color)

    page_add.title('samane daneshjoii/add student')

    page_add.resizable(width=False, height=False)

    page_add.geometry('600x300')

l_name = Label(page_add ,text= 'name : ' ,bg= 'papaya whip', font=('arial', 10)).place(x= 200 ,y=30)

 

1 پاسخ

0 امتیاز

این خطا به دلیل این است که شما از place به صورت زمانی که ویجت ایجاد می‌شود استفاده می‌کنید، و این باعث می‌شود که متغیر l_name مقدار None را بگیرد. در نتیجه وقتی شما به page_add دسترسی داشته باشید و این ویجت موجود نباشد، مشکل ایجاد می‌شود.

برای حل این مشکل، بهتر است از دو خط جداگانه برای ایجاد ویجت و تنظیم موقعیت آن استفاده کنید. به عنوان مثال:

l_name = Label(page_add, text='name:', bg='papaya whip', font=('arial', 10))
l_name.place(x=200, y=30)

با این تغییر، l_name مقدار Label را نگه می‌دارد و از place به صورت جداگانه استفاده می‌کنید. این اقدام باعث می‌شود که ویجت ایجاد شده به درستی در page_add قرار بگیرد و مشکل از بین برود.

سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,920 کاربر

دسته بندی ها

...