我使用tkinter Frame
小部件创建了两个页面。
"900x650+220+20"
,"1000x800+220+20"
的第二页。有可能吗?
from Tkinter import *
def swap_frame(frame):
frame.tkraise()
root = Tk()
root.geometry("900x650+220+20")
root.title("Testing")
root.configure(borderwidth="1", relief="sunken",cursor="arrow",background="#BCC3B9",highlightcolor="black")
root.resizable(width=False, height=False)
frame2 = Frame(root, width=900, height=650)
frame1 = Frame(root, width=900, height=650)
#item 1 spinbox
Platform = Spinbox(frame1, values=("SX-16F", "SX-12VP", "SX-16VP", "VSRM-A", "NRNT-A", "FX-8", "DX-48V"), width="32")
Platform.place(x=500, y=200, relheight=0.05)
Button1=Button(frame1, text="Next", width =10, height= 2, bg= "#dbd8d7", command=lambda:swap_frame(frame2))
Button1.place(x=580, y=580)
Button3=Button(frame2, text="Back", width =10, height= 2, bg= "#dbd8d7", command=lambda:swap_frame(frame1))
Button3.place(x=580, y=580)
frame2.grid(row=0, column=0)
frame1.grid(row=0, column=0)
root.mainloop()
答案 0 :(得分:1)
在geometry
方法的master
上使用swap_frame
方法调用框架:
frame.master.geometry("900x650+220+20")
或更一般地说:
widget.winfo_toplevel().geometry("100x250+220+20")
如果您希望每个框架都有不同的展示位置/尺寸,可以采取多种方式:
dict
离子或list
,然后使用基于映射的geometry
调用
在框架上geometry
映射当前框架geometry
对于当前框架以下示例使用3中建议的属性:
def resize(widget):
widget.winfo_toplevel().geometry(widget.geo)
def swap_frame(frame):
resize(frame)
frame.tkraise()
...
frame1.geo = "900x650+220+20"
frame2.geo = "1000x800+220+20"