2012-04-16 1 views
0

Как я могу добавить виджет кнопки поверх фонового изображения?Как установить виджет кнопки на виджет ярлыка и определить его позицию в Tkinter

from Tkinter import * 
import tkMessageBox 

root = Tk() 

# load image 
logo = PhotoImage(file="C:\\Users\\admin\\Desktop\\project\\front page.gif") 
w = logo.width() 
h = logo.height() 

root.geometry('%dx%d+0+0' % (w,h)) 

def helloCallBack(): 
    tkMessageBox.showinfo("Hello Python", "Hello World") 

#create widgets 
B = Button(root,text = "ASSOCIATIONS", command = helloCallBack,width = 20,padx = 20) 
B.pack() 

B1 = Button(root,text = "HELP", command = helloCallBack,width = 20,padx = 20) 
B1.place(relx=1, x=-50, y=2, anchor=NE) 
B1.pack() 

w1 = Label(root, compound = CENTER, image = logo).pack(side="right") 

root.mainloop() 

ответ

3

Проще всего сделать, это поставить фоновое изображение в виджете, используя place, а затем поставить другие виджеты в том, что виджет так, как вы обычно делаете либо pack или grid

background=Label(root, image=logo).place(x=0,y=0,relwidth=1, relheight=1) 
b = Button(root, ...).pack(...) 

Убедитесь вы сначала создаете фон, чтобы иметь более низкий порядок укладки.

Если вы действительно хотите надеть кнопку на этикетке, просто сделайте ярлык родителем кнопки и используйте pack или grid так, как вы обычно это делаете - это вполне законно, чтобы упаковать что-то внутри кнопки или ярлыка или любой другой виджет (хотя конечный результат может быть не таким, как вы ожидаете).

+0

Другая легкая вещь помещается кнопка и изображение внутри холста. Виджеты внутри холста всегда сидят поверх всего остального на холсте. (Было бы неплохо, если бы была возможность правильно сложить вещи, но на данный момент их нет.) –

Смежные вопросы