如何从 tkinter 中的子窗口对根窗口进行修改?

我正在尝试创建一个子窗口,允许您在主窗口中更改某些参数。我创建了一个函数,当被一个按钮调用时,会弹出一个选项菜单,用于选择要更改的选项,然后是一些输入框以输入要更改的内容。

我的第一个想法是更改函数中的数据,然后返回它,但我认为这不起作用,因为触摸按钮即可调用该函数。有人有什么建议吗?


扬帆大鱼
浏览 120回答 1
1回答

鸿蒙传说

下面是一个简单的示例,说明如何直接更新根窗口和全局命名空间中的任何变量。它只是您在从按钮调用的函数中执行的操作的问题。如果您有任何疑问,请告诉我。import tkinter as tkroot = tk.Tk()root.config(background='white')root.geometry('250x100')label_1 = tk.Label(root, text=0)label_1.pack()label_2 = tk.Label(root, text='test')label_2.pack()def toggle_root_bg():    # check the color of the root window and toggle accordingly.    if root['background'] == 'black':        root.config(background='white')    else:        root.config(background='black')def update_root_labels(one, two):    # Apply argument values to the text fields of the labels defined in the global namespace.    label_1.config(text=one)    label_2.config(text=two)def sub_window():    # setting sub window variable name to be used with other widgets.    top = tk.Toplevel(root)    tk.Label(top, text='Provide a number: ').grid(row=0, column=0)    tk.Label(top, text='Provide a string: ').grid(row=1, column=0)    entry_1 = tk.Entry(top)    entry_2 = tk.Entry(top)    entry_1.grid(row=0, column=1)    entry_2.grid(row=1, column=1)    # create a sub function to get the current entry field values    # then pass these values on to our update function.    def submit_update():        update_root_labels(entry_1.get(), entry_2.get())    tk.Button(top, text='Update root labels', command=submit_update).grid(row=2, column=0)    tk.Button(top, text='Toggle Root Background', command=toggle_root_bg).grid(row=3, column=0)tk.Button(root, text='Open sub window', command=sub_window).pack()root.mainloop()以前:后:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python