Python 如何在“差异”之间切换;“框架”;
我最近一直在学习如何使用Python 如何在“差异”之间切换;“框架”;,python,tkinter,tkinter-canvas,Python,Tkinter,Tkinter Canvas,我最近一直在学习如何使用tkinter,我想使用按钮在两种不同的canvas(任何更合适的术语)之间切换。然而,每当我在按钮之间点击切换帧时,屏幕似乎并不清晰。有办法解决这个问题吗 #Imports import tkinter as tk #master means the variable class App(tk.Frame): def __init__(self, master=None): super().__init__(master) s
tkinter
,我想使用按钮在两种不同的canvas
(任何更合适的术语)之间切换。然而,每当我在按钮之间点击切换帧时,屏幕似乎并不清晰。有办法解决这个问题吗
#Imports
import tkinter as tk
#master means the variable
class App(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master.title("Testing") #Setting the title
self.master.minsize(800, 600) #The minimum size it can be
self.canvas = tk.Canvas(self, bg="black")
self.section1()
def section2(self):
self.pack(fill=tk.BOTH, expand=1)
#Creating the canvas and drawing a line
self.canvas.create_line(15, 25, 200, 25, fill="red")
#Going back to the "main menu"
self.exit = tk.Button(self, text="exit", fg="red", command=self.section1)
self.exit.place(x=0, y=50)
self.canvas.pack(fill=tk.BOTH, expand=1)
def section1(self): #Main menu
self.pack(fill=tk.BOTH, expand=1)
self.button = tk.Button(self, text="See Line", fg="red", command=self.section2)
self.button.place(x=0, y=0)
#Exit button
self.exit = tk.Button(self, text="exit", fg="red", command=self.master.destroy)
self.exit.place(x=0, y=25)
window = App() #Declaring the window
window.mainloop()
您可以使用几何图形管理器
pack
-pack\u-forget
(或grid
-grid\u-forget
)在小部件之间切换(此处canvas
,但它可以是frames
,或按钮
,或标签
)
也许是这样:
import tkinter as tk
class App(tk.Tk):
def __init__(self):
super().__init__()
self.title("Testing")
self.minsize(800, 600)
self.swap_btn = tk.Button(self, text='swap canvas', command=self.swap_canvas)
self.swap_btn.pack()
self.canvas1 = tk.Canvas(self, bg="black")
self.canvas2 = tk.Canvas(self, bg="blue")
self.canvasses = [self.canvas2, self.canvas1]
self.current_canvas = self.canvas1
self.current_canvas.pack(expand=True, fill=tk.BOTH)
self.draw_some_stuff()
def swap_canvas(self):
self.current_canvas.pack_forget()
self.current_canvas = self.canvasses.pop(0)
self.canvasses.append(self.current_canvas)
self.current_canvas.pack(expand=True, fill=tk.BOTH)
def draw_some_stuff(self):
self.canvas1.create_oval(200, 200, 300, 300, fill='blue')
self.canvas2.create_rectangle(200, 200, 300, 300, fill='black')
self.canvas1.create_oval(400, 200, 500, 300, fill='blue')
self.canvas2.create_rectangle(400, 200, 500, 300, fill='black')
window = App() #Declaring the window
window.mainloop()
您可以使用几何图形管理器
pack
-pack\u-forget
(或grid
-grid\u-forget
)在小部件之间切换(此处canvas
,但它可以是frames
,或按钮
,或标签
)
也许是这样:
import tkinter as tk
class App(tk.Tk):
def __init__(self):
super().__init__()
self.title("Testing")
self.minsize(800, 600)
self.swap_btn = tk.Button(self, text='swap canvas', command=self.swap_canvas)
self.swap_btn.pack()
self.canvas1 = tk.Canvas(self, bg="black")
self.canvas2 = tk.Canvas(self, bg="blue")
self.canvasses = [self.canvas2, self.canvas1]
self.current_canvas = self.canvas1
self.current_canvas.pack(expand=True, fill=tk.BOTH)
self.draw_some_stuff()
def swap_canvas(self):
self.current_canvas.pack_forget()
self.current_canvas = self.canvasses.pop(0)
self.canvasses.append(self.current_canvas)
self.current_canvas.pack(expand=True, fill=tk.BOTH)
def draw_some_stuff(self):
self.canvas1.create_oval(200, 200, 300, 300, fill='blue')
self.canvas2.create_rectangle(200, 200, 300, 300, fill='black')
self.canvas1.create_oval(400, 200, 500, 300, fill='blue')
self.canvas2.create_rectangle(400, 200, 500, 300, fill='black')
window = App() #Declaring the window
window.mainloop()
我在代码中只看到一个画布。您想切换到什么?
section1()
和section2()
不是“框架”。我在您的代码中只看到一个画布。您想切换到什么?section1()
和section2()
不是“框架”。