Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/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 从另一个Tk实例调用Tk实例会导致设置文本变量的问题_Python_Python 2.7_Tkinter_Ttk - Fatal编程技术网

Python 从另一个Tk实例调用Tk实例会导致设置文本变量的问题

Python 从另一个Tk实例调用Tk实例会导致设置文本变量的问题,python,python-2.7,tkinter,ttk,Python,Python 2.7,Tkinter,Ttk,我使用Tkinter和ttk构建了一个简单的用户下拉菜单。我使用textvariable.set()为加载时的窗口设置默认值。一切都很好。代码如下 from Tkinter import * import ttk parent = Tk() myvalue = StringVar() user_entry1 = ttk.Combobox(parent, values=['value 1', 'value2'], textvariable=myvalue) user_entry1.pack()

我使用
Tkinter
ttk
构建了一个简单的用户下拉菜单。我使用
textvariable.set()
为加载时的窗口设置默认值。一切都很好。代码如下

from Tkinter import *
import ttk
parent = Tk()

myvalue = StringVar()

user_entry1 = ttk.Combobox(parent, values=['value 1', 'value2'], textvariable=myvalue)
user_entry1.pack()
myvalue.set('default value')
mainloop()
现在,我想变得更复杂一点,使用另一个名为
root
Tk()
实例来生成我的
parent
Tk()
实例。一切似乎都很正常,除了下拉列表的默认值没有显示。它确实被分配给textvariable,这一点可以通过
print myvalue.get()
证明。我错过了什么

from Tkinter import *
import ttk

root = Tk()

def load_dropdown():
    parent = Tk()
    myvalue = StringVar()

    user_entry1 = ttk.Combobox(parent, values=['value 1', 'value2'], textvariable=myvalue)
    user_entry1.pack()
    myvalue.set('default value')
    print myvalue.get()
    parent.mainloop()

b = Button(root, text="Generate Dropdown ", command=load_dropdown)
b.pack()
root.mainloop()

在tkinter应用程序中,不能多次使用
Tk
的实例。您正在观察尝试这样做的负面副作用之一


如果需要第二个窗口,请创建的实例而不是
Tk
的第二个实例

在tkinter应用程序中不能多次使用
Tk
的实例。您正在观察尝试这样做的负面副作用之一


如果需要第二个窗口,请创建的实例而不是
Tk
的第二个实例

在tkinter应用程序中不能多次使用
Tk
的实例。您正在观察尝试这样做的负面副作用之一


如果需要第二个窗口,请创建的实例而不是
Tk
的第二个实例

在tkinter应用程序中不能多次使用
Tk
的实例。您正在观察尝试这样做的负面副作用之一


如果需要第二个窗口,请创建的实例而不是
Tk
的第二个实例

在tkinter中,您只能创建一个由 root=Tk()

这是您的默认窗口。如果您放弃第二次创建父对象,您的示例将起作用

要创建更多窗口,请使用new_window=TopLevel()

关于tkinter有很多很好的文档,利用它,它将带您走得更远:)


在tkinter中,您只能创建一个由 root=Tk()

这是您的默认窗口。如果您放弃第二次创建父对象,您的示例将起作用

要创建更多窗口,请使用new_window=TopLevel()

关于tkinter有很多很好的文档,利用它,它将带您走得更远:)


在tkinter中,您只能创建一个由 root=Tk()

这是您的默认窗口。如果您放弃第二次创建父对象,您的示例将起作用

要创建更多窗口,请使用new_window=TopLevel()

关于tkinter有很多很好的文档,利用它,它将带您走得更远:)


在tkinter中,您只能创建一个由 root=Tk()

这是您的默认窗口。如果您放弃第二次创建父对象,您的示例将起作用

要创建更多窗口,请使用new_window=TopLevel()

关于tkinter有很多很好的文档,利用它,它将带您走得更远:)


有两个
Tk
实例会混淆它。如果您希望在单独的顶级窗口中显示内容,请改为调用,这样就可以正常工作

def load_dropdown():
    parent = Toplevel()  # <- change to this
    myvalue = StringVar()
    ...
def load_下拉列表():

parent=Toplevel()#有两个
Tk
实例会混淆它。如果您希望在单独的顶级窗口中显示内容,请改为调用,这样就可以正常工作

def load_dropdown():
    parent = Toplevel()  # <- change to this
    myvalue = StringVar()
    ...
def load_下拉列表():

parent=Toplevel()#有两个
Tk
实例会混淆它。如果您希望在单独的顶级窗口中显示内容,请改为调用,这样就可以正常工作

def load_dropdown():
    parent = Toplevel()  # <- change to this
    myvalue = StringVar()
    ...
def load_下拉列表():

parent=Toplevel()#有两个
Tk
实例会混淆它。如果您希望在单独的顶级窗口中显示内容,请改为调用,这样就可以正常工作

def load_dropdown():
    parent = Toplevel()  # <- change to this
    myvalue = StringVar()
    ...
def load_下拉列表():
父级=顶级()#