所以我意识到我在代码中犯了一些初学者错误。所以我退了几步回到第一次尝试。我有一个带有一个窗口的小型 GUI。
现在我有一些问题:
- 为什么打招呼也得有(self)?
- 如何从另一个 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()
root = Tk()
my_gui = MyFirstGUI(root)
root.mainloop()
最佳答案
why does also greet has to have (self) ?
其他程序语言使用 @
来定义不同的类属性,而 python 使用 self
来实现这一点。 self
在类中使用,让类知道有一个类属性或方法可以从类中的任何地方(或从类外)访问。
示例好处:如果我们有一个更新变量的函数和对该函数的调用,我们将需要使用 global
并且必须在函数定义之后调用该函数代码。
像这样:
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()
how do I call (is call the right word here?) greet from another py file?
您需要像导入库一样导入文件。
例如,假设您的主程序在 main.py
中,并且在同一目录中有另一个名为 test.py
的 py
文件,并且您希望从 main.py
文件中调用 test.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
关于带有 Tkinter 和多个文件的 Python GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49777018/