但是當我在第2幀中按下按鈕時,實際發生的是按鈕不在第2幀中,而是在家中。
您通常將它們放置在一個特定的幀時創建的按鈕,不與格()
所以每次我切換到第1幀在幀2中的按鈕仍然顯示。
按鈕會一直顯示,直到你銷燬它們或grid_forget(),即刪除它們。您也可以根據需要多次調用「用按鈕創建新框架」類。沒有必要爲每個框架單獨設置一個類,請參閱下面的一個簡單示例。
import sys
if sys.version_info[0] < 3:
import Tkinter as tk ## Python 2.x
else:
import tkinter as tk ## Python 3.x
class Home():
def __init__(self, root):
self.root=root
self.column=0
main_frame=tk.Frame(self.root)
main_frame.grid(row=0)
but=tk.Button(main_frame, text="Open a Frame of Buttons",
command=self.open_another)
but.grid(row=0, column=0)
tk.Button(main_frame, text="Exit Tkinter", bg="red",
command=self.root.quit).grid(row=1, column=0, sticky="we")
def open_another(self):
""" A new frame is created every time the botton is pressed
"""
self.column += 1
another=ButtonFrame(self.root, self.column)
class ButtonFrame():
def __init__(self, root, col):
self.fr=tk.Frame(root)
self.fr.grid(row=0, column=col)
but=tk.Button(self.fr,
text="A new frame with a button "+ str(col)).grid(row=0)
tk.Button(self.fr, text="Destroy This Frame", bg="orange",
command=self.fr.destroy).grid(row=1, column=0)
root=tk.Tk()
H=Home(root)
root.mainloop()
沒有足夠的代碼。請創建一個[minimal,_complete_,verifiable example](http://stackoverflow.com/help/mcve) –