带有 Tkinter 和多个文件的 Python GUI

标签 python python-3.x class user-interface tkinter

所以我意识到我在代码中犯了一些初学者错误。所以我退了几步回到第一次尝试。我有一个带有一个窗口的小型 GUI。

现在我有一些问题:

  1. 为什么打招呼也得有(self)?
  2. 如何从另一个 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.pypy 文件,并且您希望从 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/

相关文章:

PHP 类可以在 PHP 上轻松使用 SQLite3?

c++ - 如何从 C++ 中的类开始

c++ - 类成员初始化的最佳实践

python - 跨时间轴的滑动窗口平均值

python - 在Python中从HDF5文件中删除子组

python - 将两个 csv 数据混合为一个

python - 如何读取 txt 文件并解析数据以在 tkinter GUI 中显示

Python套接字似乎无法建立连接

python - 如何正确堆叠或取消堆叠 pandas 数据框?

python - Venv 在 CentOS 中失败,确保 pip 丢失