python - 如何调用这个 tkinter gui 函数?

标签 python python-3.x function class tkinter

如何访问 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/

相关文章:

python - 在 Python 中使用 DictReader 解析 CSV

python-3.x - SWIG : fatal error: 'Python.h' file not found

c++ - 以随机顺序打印整数数组而不在C++中重复

javascript - 返回值给函数

python - 使用正则表达式将文本文件拆分为多个新文件

python - numpy.linalg.lstsqr 错误

python - 使用 Flask Rest API 上传和处理文件

python-3.x - 如何在记录 python 时使用可调用对象作为过滤器

mysql - 如果我只在 aiomysql 中选择,我是否需要提交

javascript - 声明对象数组时的函数作用域问题