Skip to main content
 首页 » 编程设计

python之如何调用这个 tkinter gui 函数

2024年08月15日29bluestorm

如何访问 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 碰巧不检查该错误,所以你可以侥幸逃脱.