我是使用tkinter和python的新手。单击按钮时,我试图同时提高两个框架。这是我的代码:
from tkinter import *
import PIL.ImageTk
WIDTH = 1920
HEIGHT = 1080
def raise_frame(frame1, frame2):
frame1.tkraise()
frame2.tkraise()
# ********************************************************************************************************************
# ********************************************************************************************************************
# ********************************************************************************************************************
root = Tk()
root.geometry(f'{WIDTH}x{HEIGHT}')
root.title("Title")
backgroundImage = PIL.ImageTk.PhotoImage(file="Images/MainBackground.jpg")
DistancebackgroundImage = PIL.ImageTk.PhotoImage(file="Images/DistanceBackground.jpg")
canvas = Canvas(root, height=HEIGHT, width=WIDTH)
canvas.pack()
# Frames Begin ********************************************************************************************************
searchFrame = Frame(root, bg='#5f9cb8')
searchFrame.place(relwidth=1, relheight=0.05)
selectionFrame = Frame(root)
selectionFrame.place(rely=0.05, relwidth=1, relheight=1)
selectionFramebackground = Label(selectionFrame, image=backgroundImage)
selectionFramebackground.pack()
backFrame = Frame(root, bg='#000')
backFrame.place(relwidth=1, relheight=0.05)
distanceCalcFrame = Frame(root)
distanceCalcFrame.place(rely=0.05, relwidth=1, relheight=1)
distanceCalcFrameBackground = Label(distanceCalcFrame, image=DistancebackgroundImage)
distanceCalcFrameBackground.pack()
# Frames End *********************************************************************************************************
distanceCalcButton = Button(selectionFrame, text='Distance', bg='#000', command=lambda: raise_frame(distanceCalcFrame,
backFrame))
distanceCalcButton.config(font=('helvetica', 20, 'bold'))
distanceCalcButton.place(relx='0.1', rely='0.1', relwidth='0.12', relheight='0.15')
raise_frame(selectionFrame)
raise_frame(searchFrame)
root.mainloop()
# ********************************************************************************************************************
# ********************************************************************************************************************
# ********************************************************************************************************************
我收到此错误:
Traceback (most recent call last):
File "/ddd/computer/asd/Project/main.py", line 48, in <module>
raise_frame(selectionFrame)
TypeError: raise_frame() missing 1 required positional argument: 'frame2'
我基本上是问我如何同时提高2个或更多帧。在此先感谢
如错误所述,以下两行无效:
raise_frame(selectionFrame)
raise_frame(searchFrame)
将两行合并为一:
raise_frame(selectionFrame, searchFrame)
或者,为灵活起见,您可以修改raise_frame()
以接受可变参数:
def raise_frame(*frames):
for frame in frames:
frame.tkraise()
实现此目的的一种方法是制作两个框架,然后打包。
这是您的代码:
def raise_frame(x, y, x2, y2):
frame1 = Frame(master, height = 100, width = 100)
frame2 = Frame(master, height = 100, width = 100)
frame1.place(x = int(x), y = int(y))
frame2.place(x = int(x2), y = int(y2))
x, y
参数是第一帧的位置,x2, y2
参数是第二帧的位置。
希望这会有所帮助!