Как добавить кнопки и надписи на рамку, если ее можно изменить

#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) .