2015-04-11 5 views
-1

Я пытаюсь добавить ярлык рядом с каждым виджетами ввода в моем графическом интерфейсе Tkinter, но при этом я получаю сообщение об ошибке global name Label not defined.Добавить метку рядом с виджем ввода Tkinter

Это мой код до сих пор:

import Tkinter as Tk 

class SampleApp(Tk.Tk): 

    def __init__(self): 
     Tk.Tk.__init__(self) 
     self.can_fname = Tk.Entry(self) 
     self.can_lname = Tk.Entry(self) 
     self.cl_fname = Tk.Entry(self) 
     self.cl_lname = Tk.Entry(self) 
     self.button = Tk.Button(self, text="Get", command=self.on_button) 
     self.button.pack() 
     self.can_fname.pack() 
     self.can_lname.pack() 
     self.cl_fname.pack() 
     self.cl_lname.pack() 

    def on_button(self): 
     a=self.can_fname.get() 
     b='hello %s' %(a) 
     with open('filename.txt', 'w') as myfile: 
      myfile.write(b) 

app = SampleApp() 
app.mainloop() 
+2

Вы говорите, что получаете «Ярлык не определен», но нигде в коде вы не называете «Яркой». Вот подсказка: посмотрите, как вы создаете кнопки; вам нужно использовать одно и то же соглашение о вызове для виджета ярлыков. –

+1

Добавьте 'self.labelX = Tk.Label (self, ...)', а затем вызов 'self.labelX.pack()' для каждого из них, который требуется перед соответствующим вызовом 'Tk.Entry()'. – martineau

ответ

0

Просто используйте менеджер сетки. Используйте следующий код:

import Tkinter as Tk 

class SampleApp(Tk.Tk): 
    def __init__(self): 
     Tk.Tk.__init__(self) 
     self.label = Tk.Label(self, text="My Label") 
     self.entry = Tk.Entry(self) 
     self.label.pack() 
     self.entry.pack() 
     self.label.grid(row=0, column=0, sticky=W) 
     self.entry.grid(row=0, column=1, sticky=W) 

app = SampleApp() 
app.mainloop() 
Смежные вопросы