如何访问 Mygui 类中的 windows 函数? 我想在我的 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)的方法很有用,但如果您有一个,您可能知道您有一个。
您需要对登录
执行相同的操作:
log = login()
log.example()
通过调用login.example
,您再次使用未绑定(bind)的方法。然后您将 ' '
作为 self
参数传递。这没有任何意义,因为 ' '
不是 login
实例,但 CPython 3.x 恰好不检查该错误,所以你可以逃脱它.
关于python - 如何调用这个 tkinter gui 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51954359/