如何解决在Tkinter中使用背景图像后,按钮放错了位置
每当我使用背景图像运行此代码时,按钮网格就会放错位置并推向底部。幸运的是,当不添加背景时,它可以按预期工作。我希望它们在执行时覆盖背景。供参考的图片添加如下。非常感谢您的帮助。
# importing the module
import tkinter.messageBox
from tkinter import *
import random
# importing the module
# initialising tkinter
class window(Frame):
def __init__(self,master = None):
Frame.__init__(self,master)
self.master = master
# initialising tkinter
# creating the window
root = Tk()
app = window(root)
root.geometry("630x630")
root.title('Odd Even Game')
C = Canvas(root,bg="blue",height=250,width=300)
filename = PhotoImage(file = "BG.png")
background_label = Label(root,image=filename)
background_label.place(x=0,y=0,relwidth=1,relheight=1)
C.pack()
frame = Frame(root)
frame.pack()
# creating the window
# image
level_1e = "p1.png"
level_1o = "pe.png"
level_2e = "r1.png"
level_2o = "re.png"
# image
def create_cards(odd_image,even_image,next_level,fno,order,suc,err,w,h):
rx = random.randint(0,order-1)
ry = random.randint(0,order-1)
for i in range(0,order):
for j in range(0,order):
if i == rx and j == ry:
create_button(i,j,odd_image,h)
else:
create_button(i,h)
def second_level(fno):
fno.pack_forget()
frame2 = Frame(root)
frame2.pack()
suc = "Congratulations! You have cleared level 2..Keep Going Buddy!"
err = "Wrong Answer..Don't give up yet!"
create_cards(level_2o,level_2e,final_level,frame2,4,157.5,157.5)
def final_level(fno):
fno.pack_forget()
root.geometry("700x700")
ap = App(root)
# creating a button function
def create_button(x,y,msg,picture,odd,h):
if picture == odd:
image = PhotoImage(file=picture)
click = Button(fno,image=image,width= w,height=h,bd = 0,command = lambda : [score_update(),next_level(fno),tkinter.messageBox.showinfo( "Odd One Out Project",msg)])
click.image = image
click.grid( row = x,column = y)
else:
image = PhotoImage(file=picture)
click = Button(fno,command = lambda : [next_level(fno),column = y)
# creating a button function
def create_frame(fno):
root.geometry("630x630")
fno.pack_forget()
frame = Frame(root)
frame.pack()
suc = "Congratulations! You have cleared level 1..Time to increas[![enter image description here][1]][1]e the difficulty!"
err = "Wrong Answer..Please Try again !!"
create_cards(level_1o,level_1e,second_level,frame,3,200,200)
def intro():
root.geometry("630x630")
frame0 = Frame(root)
frame0.pack()
click = Button(frame0,text="Start!",command = lambda [create_frame(frame0),"The game has begun!!")])
click.pack()
intro()
# starting the widget
root.mainloop()
# starting the widget
第一个图像是错误。第二张图片是必需的输出。 注意:我仍然是Python和Tkinter的初学者,因此各种术语和方法可能超出我的范围。如果考虑在内,将不胜感激。
如果需要,您可能会知道这是一个tkinter项目,用于从A * A网格中拾取奇数一张图像。
解决方法
我自己得到了答案,因此可以共享以供将来使用。
C = Canvas(root,bg="blue",height=250,width=300)
此部分绘制250 * 300尺寸的画布,因此不允许按钮在其上绘制。
只需将其更改为
C = Canvas(root,height=0,width=0)
获得理想的结果
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。