我想打开一个顶层窗口,然后关闭它,但是获取输入:
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()
这不起作用,因为未定义截止日期。我怎样才能做到这一点?就像我说的,想法是打开一个用于输入的弹出窗口,然后将其关闭但保留输入。
答案 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
希望它对您有所帮助。让我知道是否有任何错误。
欢呼