我有一个代码,我有一个下拉菜单,我需要做的是,当我从下拉列表中选择一个条目(例如:发送电子邮件)并按继续时,我需要它来填充另一个tk窗口(子窗口)。

我知道我做错了事,但无法理解如何克服这个问题,我已经搜索了一段时间,但是无法找到解决方案或指导以完成该任务。

在此先感谢您的帮助!

from tkinter import *
root = Tk()
root.geometry("400x100")
#========================================
#Entry area to enter the number

labelmain = Label(root,text="Please enter number:")
labelmain.pack()
entryvar = StringVar(root)
entrymain = Entry(root, textvariable=entryvar,width=30)
entrymain.pack()
#========================================
#Create option drop down list:
lst = ["Save details to DB", "Send an email", "Copy format", "email",     "View report"]
ddl = StringVar(root)
ddl.set(lst[0])
option = OptionMenu(root, ddl, *lst)
option.pack()
#========================================
#Function to get the values from drop down list
def ok():
    print("value is: " + ddl.get())
    #root.quit()
#=========================================
#Button to process the selection:

btnmain = Button(root,text="Go", command=ok)
btnmain.pack()
#=========================================

if ddl.get() == "Send an email":
    samepmrdb = Tk()
    samepmrdb.mainloop()

root.mainloop()

#1楼 票数:1 已采纳

打开窗口后,您正在检查ddl的值。 正如您在问题中所说的,您希望在按下按钮后发生一些事情,因此您需要将这些代码置于所述按钮的命令下。

另外, mainloop应用程序应仅具有一个Tk()实例和一个mainloop 当您想打开另一个窗口时,应该使用Toplevel()

def ok():
    print("value is: " + ddl.get())
    if ddl.get() == "Send an email":
        samepmrdb = Toplevel()
        #now you can populate samepmrdb as  you like

#2楼 票数:0

如果你正在寻找做的是找到一种方法来更新第二tkinter从与选择窗口OptionMenu先上tkinter这可以很容易地使用下面的代码来实现窗口:

from tkinter import *

class App:
    def __init__(self, master):
        self.master = master
        self.top = Toplevel(master)
        self.master.withdraw()
        self.var = StringVar()
        self.var.set("Example1")
        self.option = OptionMenu(self.top, self.var, "Example1", "Example2", "Example3", "Example4")
        self.button = Button(self.top, text="Ok", command=lambda:self.command(self.var))
        self.label = Label(self.master)
        self.option.pack()
        self.button.pack()
        self.label.pack()
    def command(self, var):
        self.master.deiconify()
        self.label.configure(text=var.get())
        self.label.pack()

root = Tk()
app = App(root)
root.mainloop()

这将创建一个Toplevel它包含一个小部件OptionMenuButton控件。 然后,在按下Button小部件时,将从OptionMenu小部件输出选择。

这种逻辑可以用于各种各样的事情,并且将信息从一个窗口传递到另一个窗口相对简单,只要这是您要问的问题。

  ask by Ayman translate from so

未解决问题?本站智能推荐:

1回复

销毁python中的顶级tk窗口

我试图编写代码来自动关闭Python中的Topk Tk窗口。 我最终使它开始工作,但是在我无法弄清楚的途中遇到了一个小问题。 后两个按钮有效,但第一个不起作用,我不明白为什么... 有任何想法吗?
1回复

从窗口标题Python tkinter中删除TK

我重新使用了在此处找到的代码,以将TK图标设置为透明,但是它将TK留在了被调用的窗口中。 我创建了第二个窗口,并且能够编辑该标题。 但是,为什么我不能编辑从现有帖子中找到的代码。 我到处都看到了,但是我创建的新窗口可以编辑标题,为什么不在另一个带有Tk的窗口中?
1回复

Python Tk Askstring 对话框窗口焦点

我有一个带有 GUI 的应用程序,它要求用户通过 Tk Askstring 进行输入,如下所示...... 我在打开对话框时遇到的问题是,如果用户单击对话框外,它将焦点移到根 GUI 并将对话框发送到后面。 这是GUI设置... 有没有办法为 askstring 对话框设置焦点,以免发生这
1回复

使用TK python将按钮对齐到窗口的中心

我有一个使用TK构建用户界面的小型python脚本。 我无法将两个按钮"Start"和"Cancel"与窗口中心对齐。 现在它们位于左下角,但我想将它们靠在一起放在中间(在底部)。 这是我的代码: 我尝试在包中使用其他选项,例如x&y或side = bottom,但什么也没有。
2回复

在python中添加图像来装饰Tk窗口?

我是上周开始使用python的新用户。 我正在创建一个音乐库或音乐播放器作为我的学校作业之一,它允许用户单击箭头跳到下一首歌曲,只要它在同一个文件中。 然而,一个问题! GUI 看起来很糟糕而且超级无聊。 我今天有两个问题: 如何更改整个布局的背景图像并在背景中使用我自己的图像来增加兴奋感?
1回复

使用Perl TK或Python Tkinter的自定义窗口

所有通过Perl TK或Python Tkinter制作的窗口看起来都像默认的Windows风格的窗口,右上角有红色取消按钮,前面是最​​大化和最小化按钮,蓝色顶部栏等。是否可以制作自定义窗口,就像我们看到的那样对于下载的软件,从颜色,按钮位置,样式等一切都是定制的?
1回复

Python ttk滚动条错误为Toplevel()的子代,但作为Tk()的子代工作

我从网络上获取了一个代码示例,该示例充当了创建为Tk()的根窗口的子级。 当我出于概述目的将其概括为Toplevel()的子级时,出现错误,指示您无法将滚动条放入Toplevel()。Frame()。 由于Tk()和Toplevel()应该产生相似的结果,所以我无法弄清楚为什么会有所不同。
3回复

我将如何制作一个无法在 Python Tkinter 中最小化的 tk 窗口?

我试过win.overrideredirect(True)它没有用... 我的代码是这样的: 规格:Python 3.9.6 [最新],Pip 21.1.3,操作系统:Windows 10 Home 我想让最小化按钮被禁用...请帮忙