Python Tkinter 输入框

New*_*hon 3 python tkinter

再会。我正在尝试创建自己的输入框以在我的项目中使用。基本上我想做的是运行我的主表单,它将调用第二个表单。用户将提供有关第二个的一些数据,当按下第二个上的确定/关闭按钮时,数据将传回第一个。功能类似于输入框。这是我创建的内容,但我是 Python 新手,我不确定自己哪里出错了/我也无法快速确定何时返回。

我的课在这里


import tkinter as tk
class MainWindow():
    def __init__(self, parent):
        top = self.top = tk.Toplevel(parent)
        self.myLabel = tk.Label(top, text='Enter a Grouping Name')
        self.myLabel.pack()
        self.myEntryBox = tk.Entry(top)
        self.myEntryBox.focus_set()
        self.myEntryBox.pack()
        self.mySubmitButton = tk.Button(top, text='OK', command=self.DestWin)
        self.mySubmitButton.pack()
    def DestWin(self):
        self.top.destroy()
Run Code Online (Sandbox Code Playgroud)

调用方法在这里


abc=configurator.MainWindow(root)
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 5

不完全确定您要实现的目标,但如果您尝试将值从一个窗口获取到另一个窗口,您可以在下面找到基于您的代码的扩展示例。

import tkinter as tk

class MainWindow():
    def __init__(self, parent):
        top = self.top = tk.Toplevel(parent)
        self.myLabel = tk.Label(top, text='Enter a Grouping Name')
        self.myLabel.pack()
        self.myEntryBox = tk.Entry(top)
        self.myEntryBox.focus_set()
        self.myEntryBox.pack()
        self.mySubmitButton = tk.Button(top, text='OK', command=self.DestWin)
        self.mySubmitButton.pack()
    def DestWin(self):
        # call callback function setting value in MyFrame
        self.callback(self.myEntryBox.get())
        self.top.destroy()


    def set_callback(self, a_func):
        self.callback = a_func



class MyFrame(tk.Frame):
    def __init__(self, parent, **kwargs):
        super().__init__(parent, **kwargs)
        self.pack()

        self.myLabel1 = tk.Label(parent, text='Click OK to enter the group name')
        self.myLabel1.pack()
        self.mySubmitButton1 = tk.Button(parent, text='OK', command=self.get_group_name)
        self.mySubmitButton1.pack()

    def get_group_name(self):
        mw = MainWindow(None)

        # provide callback to MainWindow so that it can return results to MyFrame
        mw.set_callback(self.set_label)



    def set_label(self, astr = ''):
        self.myLabel1['text'] = astr





root = tk.Tk()

mf = MyFrame(root)

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

截图:

在此处输入图片说明

当按下 OK 时,右侧窗口中的文本将显示在左侧窗口中。这是通过回调实现的。MainWindow接受一个回调函数,当你按下 OK 时,它就会被执行。回调set_label来自 MyFrame。

希望这可以帮助。