Python 如何使用类在Tk()窗口中自动插入几个tkinter项
如果这是一个愚蠢的简单问题,我提前表示歉意,但我对att python类非常糟糕,似乎无法让它工作 这是我的密码:Python 如何使用类在Tk()窗口中自动插入几个tkinter项,python,tkinter,Python,Tkinter,如果这是一个愚蠢的简单问题,我提前表示歉意,但我对att python类非常糟糕,似乎无法让它工作 这是我的密码: from tkinter import * a = Tk() class toolsGUI(): def __init__(self, rootWin): pass def frame(self): frame = Frame(rootWin) frame.configure(bg = 'red')
from tkinter import *
a = Tk()
class toolsGUI():
def __init__(self, rootWin):
pass
def frame(self):
frame = Frame(rootWin)
frame.configure(bg = 'red')
frame.grid()
def button(self, binding, text):
btn = Button(rootWin, text=text)
btn.configure(bg = 'orange', fg = 'black')
btn.bind('<'+binding+'>')
btn.grid(row=1, sticky = N+S+E)
我只是想让按钮或框架理解rootWin与uuu init_uuu中的相同,在这种情况下,rootWin应该是变量a,从而将按钮放在Tk窗口中。环顾四周后,我明白这不是做这件事的方法。有没有人有其他可行的建议?你很接近了。您正在将a传递给toolsGUI初始值设定项,这是正确的第一步。您只需将其保存为实例变量,然后在需要引用根窗口时使用该变量:
def __init__(self, rootWin):
...
self.rootWin = rootWin
...
def frame(self):
frame = Frame(self.rootWin)
...
另一种方法是让toolsGUI从框架继承,在这种情况下,您可以将所有小部件放在框架中而不是根窗口中。然后需要额外的步骤将此框架放入根窗口中
class toolsGUI(Frame):
def __init__(self, rootWin):
Frame.__init__(self, rootWin)
def frame(self):
frame = Frame(self)
...
a = Tk()
t = toolsGUI(a)
t.pack(fill="both", expand=True)
a.mainloop()
最后一点建议:如果可以避免的话,不要使用与方法同名的变量。框架是一个糟糕的函数名选择。取而代之的是,将其称为create_frame或其他东西,否则它可能会与类frame和局部变量frame混淆