簡體   English   中英

Python Tkinter輸入框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM