[英]Python Tkinter Input Box
美好的一天。 我正在嘗試創建自己的輸入框以供在我的項目中使用。 基本上我想要做的是運行我的主要表單,它將調用第二個。 用戶將在第二個上提供一些數據,當按下第二個上的ok / close按鈕時,數據將被傳遞回第一個。 功能類似於輸入框。 這里是我創建的,但是對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()
調用它的方法就在這里
abc=configurator.MainWindow(root)
不完全確定您要實現的目標,但如果您嘗試從一個窗口獲取值到另一個窗口,則可以在下面找到基於代碼的擴展示例。
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()
截圖:
當按下OK時,右側窗口中的文本將顯示在左側窗口中。 這是通過回調實現的。 MainWindow
采用回調函數,當你按OK時,它會被執行。 回調是set_label
從MyFrame。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.