如何访问 Mygui 类中的窗口功能? 我想在我的 tkinter 框中创建彩色内容# 但我不能给它传递值。
from tkinter import *
class Mygui:
def window(self, colour):
self.main_window=Tk()
self.main_window.geometry('300x100')
self.main_window.title('Login')
self.top_frame=Frame(self.main_window)
self.top_frame.pack()
self.label=Label(self.top_frame, fg=colour, text="Sample Text", width=45)
self.label.pack(side="top")
self.label1=Label(self.top_frame,text=" ", width=45)
self.label1.pack(side="top")
self.my_button = Button(self.main_window, text="Retry", command=self.do_something, height=2, width=18)
self.my_button.pack()
mainloop()
def do_something(self):
print('ok')
class login:
def example(self):
print("Start")
Mygui.window('blue')
a = login.example(' ')
我得到的错误是:
Start
Traceback (most recent call last):
File "B:/data/loginMech/test.py", line 25, in <module>
a = login.example(' ')
File "B:/data/loginMech/test.py", line 23, in example
Mygui.window('blue')
TypeError: window() missing 1 required positional argument: 'colour'
请您参考如下方法:
Mygui 是一个类,而不是一个函数。因此,您必须构建它的一个实例,如下所示:
gui = Mygui()
然后您可以在该实例上调用方法:
gui.window('blue')
当您编写 Mygui.window 时,这是一个未绑定(bind)的方法,您可以通过显式传递一个 self 参数及其其他参数来调用它。但是您仍然需要传递一些东西作为 self:
gui = Mygui()
Mygui.window(gui, 'blue')
通常,您不想这样做。在某些情况下,未绑定(bind)方法很有用,但如果您有一个,您可能知道您有一个。
你需要对 login 做同样的事情:
log = login()
log.example()
通过调用 login.example,您再次使用未绑定(bind)的方法。然后您将 ' ' 作为 self 参数传递。这没有任何意义,因为 ' ' 不是 login 实例,但 CPython 3.x 碰巧不检查该错误,所以你可以侥幸逃脱.
