Виджеты Python tkinter не отображаются - PullRequest
0 голосов
/ 09 мая 2011

Я создал два виджета: метку и холст, они находятся внутри класса и в методе init класса.По какой-то причине ни один из виджетов не появляется, и он просто дает мне пустое окно tkinter.

def __init__ (self, master):
    self.mousepos = 0,0
    self.clickpos = 0,0
    self.poslabel = Label(master, text = "Mouse Click: " \
                          + str(self.clickpos) + "Cursor Point: "\
                          + str(self.mousepos))
    self.poslabel.pack()
    self.fcanvas = Canvas(master,width=800,height=400, bg = 'grey90',\
                          borderwidth = 5, relief = RAISED)
    self.fcanvas.bind("<Button-1>", self.pressButton1)
    self.fcanvas.pack()

Ответы [ 2 ]

2 голосов
/ 14 мая 2011

Для справки вот рабочая версия вашего кода. Обратите внимание, как я передал root в качестве аргумента master. Также обратите внимание на то, как я использовал метод .mainloop () для пользователя root.

Tkinter работает в цикле, если вы не вызовете метод .mainloop () , ваша программа не будет работать должным образом.

Это должно работать:

from Tkinter import *

class MyWidgets :
    def __init__ (self, master) :
        self.mousepos = 0,0
        self.clickpos = 0,0
        self.poslabel = Label(master, text = "Mouse Click: " \
                              + str(self.clickpos) + "Cursor Point: "\
                              + str(self.mousepos))
        self.poslabel.pack()

        self.fcanvas = Canvas(master, width=800,height=400, bg = 'grey90',\
                              borderwidth = 5, relief = RAISED)
        self.fcanvas.bind("<Button-1>", self.pressButton1)
        self.fcanvas.pack()

    def pressButton1 (self, event) :
        print 'You pressed button 1!'

if __name__ == '__main__' :

    root = Tk()
    MyWidgets(root)
    root.mainloop()
2 голосов
/ 09 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...