【问题标题】:Calling Tkinter Objects from Another File从另一个文件调用 Tkinter 对象
【发布时间】:2020-11-03 00:20:42
【问题描述】:
class SneakerGuide(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        
        global stockXURLInput
        stockXURLInput = Entry(sneakerBasicDetails)
        stockXURLInput.grid(row=5, column=1)

所以我有这个类,在它里面,我有这个函数,它是一个初始化函数,并且我有一堆不同的东西我想要 .get() 。我只是打出一个例子。但是我正在尝试在该类之外获取条目输入(实际上我正在尝试从另一个文件中获取它,但我知道如何导入它们和东西。在这种情况下我将如何去做呢

【问题讨论】:

  • 如果你想访问一个类中的一些变量,你需要将它们创建为实例变量(前缀self.)。然后可以通过类的实例来访问它们,即如果aSneakerGuide的实例,则使用a.somevar访问类的实例变量somevar

标签: python tkinter calling-convention


【解决方案1】:

对于要在类之外访问的对象,必须使它们成为类的实例属性。

例如,您不会像在您的示例中那样使用global。使用global 在很大程度上违背了使用类的目的。相反,您可以这样做:

class SneakerGuide(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        
        self.stockXURLInput = Entry(sneakerBasicDetails)
        self.stockXURLInput.grid(row=5, column=1)

要从条目中获取值,您所需要的只是对类实例的引用。

root = tk.Tk()
...
guide = SneakerGuide(root)
...
print(f"The url is {guide.stockXURLInput.get9)}")

这不是 tkinter 独有的,这就是所有 python 对象的工作方式。

【讨论】:

  • 我这样做了,但出现错误提示:“类 'SneakerGuide' 没有 'stockXURLInput' 成员
  • @JohnSantoro:如果是这样,那么你做错了。如果 python 说 guide 对象没有 stockXURLInput 属性,它说的是实话。这是所有 python 对象如何工作的基础。
  • 澄清一下,我会在 guide = SneakerGuide(root) 中以什么为根
  • @JohnSantoro:Tk 的实例你应该在程序开始时创建,或者任何其他小部件。
  • 非常感谢!也感谢您的快速回复!既然你在这里,我在这里问了一个非常相似的问题:stackoverflow.com/questions/64811482/…,没有人回答。如果可以的话,我将不胜感激。它与这里讨论的原理相同,只是以不同的方式使用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
  • 2018-06-17
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多