Я пытаюсь отобразить изображение на python, используя опцию tkinter canvas. Однако, если я ввожу его в класс, как показано ниже, он не дает ошибку, но также не показывает мое изображение. Кнопки отображаются правильно. Кроме того, если я возьму код для создания этого изображения из класса, он работает правильно. Кажется, я не могу понять, в чем проблема.Изображение tkinter canvas не отображается в классе
import Tkinter as tk
from Tkinter import *
class Board(tk.Frame):
def __init__(self,parent):
frame = Frame(parent)
frame.pack()
tk.Frame.__init__(self,parent)
frame2 = Frame(frame)
frame2.pack()
c=Canvas(frame2)
c.pack(expand=YES,fill=BOTH)
background=PhotoImage(file='Board.gif')
c.create_image(100,100,image=background,anchor='nw')
button = Button(frame, text="Next turn", command=self.next_turn)
button.pack()
button = Button(frame, text="Roll the dice", command=self.roll)
button.pack()
....
root = Tk()
board = Board(root)
board.pack()
root.mainloop()
почему вы делаете как 'импорта Tkinter как tk' И' от Tkinter импорта * '? –
Мой учитель сказал мне сделать это, чтобы убедиться, что все было импортировано или что-то в этом роде. Я знаю, что это не секретно, но теперь есть несколько строк, которые имеют tk.'something ', и если я просто удалю tk. моя программа волнуется. Вы думаете, что это может быть проблемой? – konovalov100
Это, вероятно, из-за 'tk.Frame .__ init __ (self, parent)' и 'class Board (tk.Frame)'. Вы можете изменить это на «Frame .__ init __ (self, parent)» и «class Board (Frame)», который должен работать, хотя я не уверен, почему вы прямо вызываете метод '__init__'; Я не вижу, какой целью служит Frame, потому что вы не ссылаетесь на него. –