所以我意识到我在代码中犯了一些初学者的错误。所以我向第一次尝试做了几步。我有一个带有一个窗口的小GUI。
现在我有一些问题:
提前致谢。
from tkinter import *
class MyFirstGUI(object):
def __init__(self, master):
self.master = master
master.title("A simple GUI")
self.label = Label(master, text="This is our first GUI!").pack()
self.greet_button = Button(master, text="Greet", command=self.greet).pack()
self.close_button = Button(master, text="Close", command=self.quit).pack()
def greet(self):
print('Hello')
def quit(self):
self.master.destroy()
root = Tk()
my_gui = MyFirstGUI(root)
root.mainloop()
答案 0 :(得分:2)
1。 为什么还要问候(自我)?
函数greet()
是MyFirstGUI
类的函数,您可以看到当您将此函数绑定到greet_button
时,函数将放在self
之后。这意味着该函数具有指向self
(MyFirstGUI
)的链接。这个链接是通过将self放在函数定义中来实现的。
2。我如何调用(在这里调用正确的单词?)来自另一个py文件? (我不确定我明白你的要求)
是的电话是对的!如果要从另一个文件调用此函数,则必须在主文件中导入MyFirstGUI
并创建此对象的实例。
mainFile.py:
from tkinter import *
from guiFile import MyFirstGUI
root = Tk()
my_gui = MyFirstGUI(root)
my_guy.greet()
root.mainloop()
guiFile.py:
from tkinter import *
class MyFirstGUI(object):
def __init__(self, master):
self.master = master
master.title("A simple GUI")
self.label = Label(master, text="This is our first GUI!").pack()
self.greet_button = Button(master, text="Greet", command=self.greet).pack()
self.close_button = Button(master, text="Close", command=self.quit).pack()
def greet(self):
print('Hello')
def quit(self):
self.master.destroy()
答案 1 :(得分:1)
为什么还要问(自己)?
其他程序语言使用@
来定义不同的类属性,但是python使用self
。在类中使用self
来让类知道有一个类属性或方法可以从类中的任何地方(或从类外部)访问。
示例好处:如果我们有一个更新变量的函数和对该函数的调用,我们将需要使用global
,并且必须在代码中定义函数之后调用该函数。 / p>
像这样:
x = 0
def update_x():
global x
x+=1
print(x)
update_x()
然而,在一个类中,我们可以避免使用global
并在调用这些方法的代码之后定义我们所有的方法(使用self的类中的函数),这样我们可以让事情变得更清晰。
像这样:
class MyClass():
def __init__(self):
self.x = 0
self.update_x()
def update_x(self):
self.x +=1
print(self.x)
MyClass()
如何调用(在这里调用正确的单词?)来自另一个py文件?
您需要像导入库一样导入文件。
例如,如果您的主程序位于main.py
并且在名为py
的同一目录中有另一个test.py
文件,并且您希望调用test.py
中的内容来自main.py
文件的文件,您需要导入test.py
文件上的main.py
文件
对于大多数属于同一目录的文件,请执行以下操作:
import test
有时你的程序是某种包,你可能需要像这样提供导入。
import package_name.test
您可以将其用作测试示例:
test.py
文件包含:
def plus_one(number):
x = number + 1
return x
main.py
文件包含:
import test
x = test.plus_one(5)
print(x)
控制台输出应为:
6