2016-11-16 7 views
-3
if v==1:     #some how v becomes equal to 1# 
     c_object=abcd() 
class abcd():     #class abcd created# 
     root=Tk() 

The code seems to run succesfully until here but gives blank window after thisПочему окно Tkinter пустое при выполнении?

 def __init__(self): 
      label_1=i1=Label(root,text="?") 
      label_1.pack(anchor=W) 
      self.c=Entry(root) 
      self.c.pack(anchor=E) 
     def execution(self): 
     ???? 
     root.mainloop() 
+2

Я попытался запустить ваш код и получил 'SyntaxError: недопустимый синтаксис'. Я заменил '????' на 'pass' и получил' NameError: name 'v' не определен'. Я добавил 'v = 1' и получил' NameError: name 'abcd' не определен'. Я переместил определение класса над условным и получил 'NameError: name 'Tk' не определен'. Пожалуйста, предоставьте [mcve], демонстрирующий вашу проблему. – Kevin

ответ

2

Ничто в вашей __init__ функции никогда не выполняется, потому что root.mainloop выполняет первый, когда определение класса оценивается, и она никогда не возвращается, пока вы не закроете окно.

Одним из возможных решений является перемещение root = Tk() и root.mainloop() внутри функции.

class abcd():     #class abcd created# 
    def __init__(self): 
     root=Tk() 
     label_1=i1=Label(root,text="?") 
     label_1.pack(anchor=W) 
     self.c=Entry(root) 
     self.c.pack(anchor=E) 
     root.mainloop() 

Однако трудно сказать, является ли это лучшим решением, не зная, как выглядит остальная часть вашего кода.

+0

thank u kevin, я новичок в stackexchange и буду иметь в виду ur advise – ojashex