我正在使用tkinter使用python 3创建代码。简而言之,代码看起来像这样:
import tkinter as tk
class home(tk.Tk):
#consists of frames
class frame1(tk.Frame):
#consists of buttons
class frame2(tk.Frame):
#consists of buttons
问题是我用字典生成多个按钮,但是当我在第2帧中按下按钮实际发生的是按钮不在第2帧而是在家中。所以每当我切换到第1帧时,第2帧中的按钮仍会显示。谁能给我一个解决方案?
答案 0 :(得分:0)
但是当我按下第2帧中的按钮时实际发生的是按钮不在第2帧但在家中。
通常在创建按钮时将它们放在特定的框架中,而不是使用grid()
所以每当我切换到第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()