Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter,如何保存从按钮调用的对顶层窗口的引用_Python_Callback_Tkinter_Widget - Fatal编程技术网

Python Tkinter,如何保存从按钮调用的对顶层窗口的引用

Python Tkinter,如何保存从按钮调用的对顶层窗口的引用,python,callback,tkinter,widget,Python,Callback,Tkinter,Widget,我有一个顶级的全功能小部件,我想在按下按钮时打开 我想保留对该实例的引用,以便从中读取变量 我一直在考虑使用mixin类或类似的东西,但如果有更简单的方法,我想先试试。(对编程来说相当陌生) 我已经尝试了下面的两种选择 这一个导致了这个可爱的错误: AttributeError:“函数”对象没有属性“变量” class addSettings(): self.pidwind=lambda:Gui_pidSelector(gui_base.configBase(root)# Top Lev

我有一个顶级的全功能小部件,我想在按下按钮时打开

我想保留对该实例的引用,以便从中读取变量

我一直在考虑使用mixin类或类似的东西,但如果有更简单的方法,我想先试试。(对编程来说相当陌生)

我已经尝试了下面的两种选择

这一个导致了这个可爱的错误: AttributeError:“函数”对象没有属性“变量”

class addSettings():
    self.pidwind=lambda:Gui_pidSelector(gui_base.configBase(root)# Top Level Reference
    ap_button_cfg= dict(cfg_gui, **{'command':self.pidwind})# opens the Window
我尝试过的其他方法是在按下按钮之前打开顶层窗口


如何实现对该窗口的引用

不知何故,我认为要做到这一点一定有一个简单的方法, 我想出了一个解决办法

widget_references={}

def winReferencer(key_name,widget,parent ):
    global widget_references

if key_name not in widget_references.keys(): 
        widget_references[key_name]=widget(parent)

but=Button(text='hi mate', command=lambda:winReferencer('my_window',Toplevel,root)).pack()

你的评论毫无意义,因为显而易见的答案是
$my_window=Toplevel(…)
。为什么这对你不起作用?你能给我们一个非常小,功能齐全的应用程序来说明你的问题吗?给它一个按钮来创建一个窗口,这样我们就可以看到你是如何创建它的。我只是想也许有一种方法可以不用函数调用就可以做到这一点。避免函数调用会适得其反。每个按钮都应该调用一个函数。它使代码更易于维护。试图将一堆代码塞进lambda没有任何作用,只会使代码更难维护。谢谢你的帮助,伙计!