Python Tkinter 输入框
Python Tkinter Input Box
美好的一天。
我正在尝试创建自己的输入框以用于我的项目。
基本上我想做的是 运行 我的主要形式,它将调用第二个。用户将在第二个上提供一些数据,当在第二个上按下 ok/close 按钮时,数据将传回第一个。功能类似于输入框。
这是我创建的内容,但作为 python 的新手,我不确定我要去哪里 wrong/nor 我可以快速弄清楚什么时候放置 return.
My Class is here
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()
The method to call it is here
abc=configurator.MainWindow(root)
不确定您要实现的目标,但如果您尝试将值从一个 window 获取到另一个,您可以在下面找到一个基于您的代码的扩展示例。
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()
截图:
右边window的文字,按下确定后,会显示在左边window。这是通过回调实现的。 MainWindow
接受一个回调函数,当你按下 OK 时,它就会被执行。回调是 set_label
来自 MyFrame.
希望这对您有所帮助。
美好的一天。 我正在尝试创建自己的输入框以用于我的项目。 基本上我想做的是 运行 我的主要形式,它将调用第二个。用户将在第二个上提供一些数据,当在第二个上按下 ok/close 按钮时,数据将传回第一个。功能类似于输入框。 这是我创建的内容,但作为 python 的新手,我不确定我要去哪里 wrong/nor 我可以快速弄清楚什么时候放置 return.
My Class is here
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()
The method to call it is here
abc=configurator.MainWindow(root)
不确定您要实现的目标,但如果您尝试将值从一个 window 获取到另一个,您可以在下面找到一个基于您的代码的扩展示例。
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()
截图:
右边window的文字,按下确定后,会显示在左边window。这是通过回调实现的。 MainWindow
接受一个回调函数,当你按下 OK 时,它就会被执行。回调是 set_label
来自 MyFrame.
希望这对您有所帮助。