#python #user-interface #tkinter #frame
Вопрос:
у меня есть код:
from tkinter import * from PIL import Image, ImageTk root = Tk() root.geometry("900x580") class Example(Frame): def __init__(self, master, *pargs): Frame.__init__(self, master, *pargs) self.image = Image.open("eth_background.png") self.img_copy= self.image.copy() self.background_image = ImageTk.PhotoImage(self.image) self.background = Label(self, image=self.background_image) self.background.pack(fill=BOTH, expand=YES) self.background.bind('lt;Configuregt;', self._resize_image) self.widget = Button(self, text='Hello world', command=self.quit) self.widget.pack(side=LEFT) def _resize_image(self,event): new_width = event.width new_height = event.height self.image = self.img_copy.resize((new_width, new_height)) self.background_image = ImageTk.PhotoImage(self.image) self.background.configure(image = self.background_image) e = Example(root) e.pack(fill=BOTH, expand=YES) root.mainloop()
Я сделал это, чтобы bacground автоматически изменял размер, но теперь я не могу добавлять кнопки или надписи на рамке. Я нашел его:
from Tkinter import * class Hello(Frame): def __init__(self, parent=None): Frame.__init__(self, parent) self.pack() self.make_widgets() def make_widgets(self): widget = Button(self, text='Hello world', command=self.quit) widget.pack(side=LEFT) if __name__ == '__main__': Hello().mainloop()
но это, очевидно, не работает, как я могу сделать этот кадр, изменяемый размер поля и кнопки на нем?
Комментарии:
1. Не могли бы вы немного подробнее рассказать о том, что не работает? Я попробовал второй пример, и он, похоже, соответствует вашему описанию: кнопка отображается на рамке, размер рамки изменяется.
2. да, второй пример в порядке, но без фона. Я хочу создать кадр с фоном (файл.png), размер которого должен изменяться, и на кадре должны быть видны некоторые кнопки/метки.
3. Как вы думаете, почему вы не можете добавить кнопки? Что происходит, когда вы пытаетесь?
4. есть «за» рамкой или рядом с ней. когда я пытаюсь добавить, как в моем примере, они невидимы
5. Попробуйте использовать
self.background.place(x=0, y=0, relwidth=1, relheight=1, anchor=NW)
вместоself.background.pack(fill=BOTH, expand=YES)
.