首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在tkinter中保留弹出顶层窗口中获取的输入字段的值?

如何在tkinter中保留弹出顶层窗口中获取的输入字段的值?
EN

Stack Overflow用户
提问于 2018-08-05 02:37:03
回答 1查看 143关注 0票数 0

我无法让我的代码将弹出文本条目传递给全局变量,我还试图在以后的所有实例中将此全局变量设置为输入字段中的默认文本。

Pop -> Enter Filepath -> accept&close -> Re-open显示最后一个文件路径显示为默认->,如果更改,新的文件路径条目将来将成为默认。

代码语言:javascript
复制
import tkinter as tk
from tkinter import ttk
from tkinter import *

master = tk.Tk()

Var1 = StringVar()
Filepath_Var = None

def A_Connect():
    root = Tk()
    root.title("Entry Field")

    def entry_field():
        global Filepath_Var
        Filepath_Var = Var1.get()

    tk.Label(root, text="filepath: ").grid(row=0)
    e1 = tk.Entry(root, textvariable=Var1)

    tk.Label(root, text="Item Number: ").grid(row=1)
    e2 = tk.Entry(root)
    #e1.insert(0, r"C:\Users\zxy\ghj\iugf\Bea\something.xlsx")
    e1.insert(0, Var1.get())

    e1.grid(row=0, column=1)
    e2.grid(row=1, column=1)

    Button(root, text = 'Accept', command = entry_field).grid(row=3, column=1,
                                    sticky=W, pady=4)
    root.mainloop()

note = ttk.Notebook(master)

tab1 = tk.Frame(note)

canvas7 = Canvas(tab1, width=520, height=350)
canvas7.pack()

A_Button = tk.Button(tab1, text="A",
                       width=12, height=3,command=A_Connect, anchor = 'w')
A_Button_Window = canvas7.create_window(20, 120, anchor = 'sw',
                                         window = A_Button)

note.add(tab1, text = "  Main    ")

note.pack()
master.mainloop()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-05 07:11:53

作为earlier question的后续,我将所需的(基本)行为的示例封装在两个类中:

主应用程序由一个启动条目弹出窗口的按钮组成;在填写字段并接受后,条目中的值将提供给应用程序,弹出窗口关闭。

输入的值由App存储,并用于在连续弹出窗口中填充输入字段的输入字段。

在更改默认值和关闭弹出窗口之前,您可能想要添加确认和验证,但在这里,您已经有了基本的框架来附加它。

代码语言:javascript
复制
import tkinter as tk


class PopUpEntry(tk.Toplevel):
    def __init__(self, master, default_value=None):
        self.master = master
        super().__init__(self.master)
        if default_value is None:
            self.default_entry = 'C:*****\somthing.xlsx'
        else:
            self.default_entry = default_value
        self.title("Entry Field")
        tk.Label(self, text="Filepath: ").pack()
        self.e1 = tk.Entry(self)
        self.e1.insert(0, self.default_entry)
        self.e1.pack()
        tk.Button(self, text = 'Accept', command=self.entry_field).pack()

    def entry_field(self):
        self.default_entry = self.e1.get()
        self.master.provide_entry_value(self.default_entry)
        self.destroy()


class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.pop_entry = tk.Button(self, text='launch entry', command=self.launch_entry)
        self.pop_entry.pack()
        self.default_entry_value = None
        self.mainloop()

    def launch_entry(self):
        PopUpEntry(self, self.default_entry_value)

    def provide_entry_value(self, value):
        self.default_entry_value = value
        print(self.default_entry_value)

App()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51688546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档