首页 > 解决方案 > 自定义条目未显示在 Tkinter 多窗口上

问题描述

我在第二个窗口“Demo 2”上有一个自定义条目“self.name_e”,但是每当我运行代码时,自定义条目只显示在第一个窗口“Demo 1”上...... self.name_e 用于接收条目on Window 2 "Demo 2" AutocompleteEntry 是 windows 2 使用的自定义 Entry 类 我该如何解决这个问题?

import tkinter as tk

#To shorten the code for perfect readability I chose to remove the content of the AutocompleteEntry class   
class AutocompleteEntry(Entry):...
 
class Demo1:
    def __init__(self, master):
        self.master = master
        self.frame = tk.Frame(self.master)
        self.button1 = tk.Button(self.frame, text = 'New Window', width = 25, command = self.new_window)
        self.master.geometry("1366x768+0+0")
        self.button1.pack()
        self.frame.pack()

    def new_window(self):
        self.newWindow = tk.Toplevel(self.master)
        self.app = Demo2(self.newWindow)

class Demo2:
    def __init__(self, master):
        self.master = master
        autocompleteList = [ 'Milo tin', 'Shito small' ]
        def matches(fieldValue, acListEntry):
            pattern = re.compile(re.escape(fieldValue) + '.*', re.IGNORECASE)
            return re.match(pattern, acListEntry)
        self.frame = tk.Frame(self.master)
        self.quitButton = tk.Button(self.frame, text = 'Quit', width = 25, command = self.close_windows)
        self.master.geometry("1366x768+0+0")
        self.quitButton.pack()
        self.frame.pack()
        
        #AutocompleteEntry is a custom Entry which is also a class on it own
        self.name_e = AutocompleteEntry(autocompleteList, listboxLength=10, width=20, font=('arial 18 bold'), matchesFunction=matches)
        self.name_e.place(x=350, y=150)

    def close_windows(self):
        self.master.destroy()

def main(): 
    root = tk.Tk()
    app = Demo1(root)
    root.mainloop()

if __name__ == '__main__':
    main()

标签: pythonpython-3.xpython-2.7tkintertk

解决方案


推荐阅读