从第二个tkinter窗口中获取数据

时间:2020-08-14 14:14:28

标签: python tkinter

我想打开一个顶层窗口,然后关闭它,但是获取输入:

def popupDeadline():
    newWindow = Toplevel()
    newWindow.geometry("290x100+300+300")
    newWindow.configure(bg='#ffffff')   
    newWindow.resizable(height=False, width=False)
    labelFrame = Label(newWindow, text="Enter Deadline (YYYY-MM-DD)")
    labelFrame.place(x=50, y=10)
    labelFrame.configure(bg='#ffffff') 
    deadlined=StringVar()
    d1=Entry(newWindow,textvariable=deadlined)
    d1.config(width=40)
    d1.place(x=50, y=30, width=200, height=20)
    btn = Button(newWindow, text="Enter", command=save_quit) 
    btn.place(x=50, y=50, width=100, height=20)

并且:

def save_quit():
    deadline = deadlined.get()

这不起作用,因为未定义截止日期。我怎样才能做到这一点?就像我说的,想法是打开一个用于输入的弹出窗口,然后将其关闭但保留输入。

2 个答案:

答案 0 :(得分:1)

您的问题的答案很简单,如下所示:

步骤1.将值存储在 class _DemoPageState extends State<DemoPage> { static const TAG ='DemoPage'; bool isToolTipTapped = false; Future<SharedPreferences> _prefs = SharedPreferences.getInstance(); Future<bool> checkIfToolTipTapped() async { SharedPreferences prefs = await _prefs; return prefs.getBool(SchnapConfigValues.toolTipTapped ?? false); } @override void didChangeDependencies() { super.didChangeDependencies(); checkIfToolTipTapped().then((value) { setState(() { isToolTipTapped = value; }); }); } @override Widget build(BuildContext context) { if (isToolTipTapped) { return Your Loading Widget... } else { //Handle logic with isToolTipTapped } } } 中的变量Eg中:-

Entry

第2步。将上面的代码放入一个可在单击按钮时触发的函数中

variable_name = entry_name.get()

但是这里有一个变化: 将全局变量分配给用于存储内容的变量(不仅在函数内部,而且在函数外部,远离def function_name(): global variable_name variable_name = entry_name.get() 声明)

如果这也不起作用,请让我知道错误是什么。

答案 1 :(得分:1)

这里的问题是变量deadlined是局部变量,这意味着它可以在函数内部使用。为了在其他函数中使用它,您必须说global deadlined,以便现在可以在global范围内访问该变量。

def popupDeadline():
    global deadlined
....

More on global and local variables

希望它对您有所帮助。让我知道是否有任何错误。

欢呼