首页 > 解决方案 > Python - Tkinter - ttk.Entry 中的不可见文本在子窗口中

问题描述

我正在尝试为配置设置创建一个子窗口。但是子窗口中的文本是不可见的。我阅读正确,但我看不到文字。以下是我的问题示例代码:

import tkinter as tk
from tkinter import ttk
from tkinter import Menu


class Frames:
    def __init__(self):
        self.port_com = None

    def main_frame(self, win):

        # Main Frame
        main = ttk.LabelFrame(win, text="")
        main.grid(column=0, row=0, sticky="WENS", padx=10, pady=10)
        return main

    def dut_configuration_frame(self, win):

        # Configuration Frame
        dut_config_frame = ttk.LabelFrame(win, text="Config")
        dut_config_frame.grid(column=0, row=0, sticky='NWS')

        # Port COM
        ttk.Label(dut_config_frame, text="Port COM").grid(column=0, row=0)
        self.port_com = tk.StringVar()
        ttk.Entry(dut_config_frame, width=12, textvariable=self.port_com).grid(column=0, row=1, sticky=tk.EW)
        self.port_com.set(value="COM7")

        print(self.port_com.get())


class ConfigFrames:
    def __init__(self):
        self.port_com = None

    def main_frame(self, win):

        # Main Frame
        main = ttk.LabelFrame(win, text="")
        main.grid(column=0, row=0, sticky="WENS", padx=10, pady=10)
        return main

    def configuration_frame(self, win):

        # Configuration Frame
        dut_config_frame = ttk.LabelFrame(win, text="Config")
        dut_config_frame.grid(column=0, row=0, sticky='NWS')

        # Port COM
        ttk.Label(dut_config_frame, text="Port COM").grid(column=0, row=0)
        self.port_com = tk.StringVar()
        ttk.Entry(dut_config_frame, width=12, textvariable=self.port_com).grid(column=0, row=1, sticky=tk.EW)
        self.port_com.set(value="COM5")

        print(self.port_com.get())


def menu_bar(win):

    def _config():
        config_frame = ConfigFrames()
        config_window = tk.Tk()
        config_window.title("Sub window")
        config_window.geometry("200x200")
        config_window.resizable(0, 0)

        main = config_frame.main_frame(config_window)
        config_frame.configuration_frame(main)
        config_window.mainloop()

    # Menu
    menuBar = Menu(win)
    win.config(menu=menuBar)

    settingsMenu = Menu(menuBar, tearoff=0)
    settingsMenu.add_command(label="Config", command=_config)
    menuBar.add_cascade(label="Settings", menu=settingsMenu)


frames = Frames()

win = tk.Tk()
win.title("Main window")
win.geometry("200x200")
win.resizable(0, 0)
menu_bar(win)
main = frames.main_frame(win)
frames.dut_configuration_frame(win)
win.mainloop()

正如您在主窗口中看到的那样,它是可见的,但在子窗口中是不可见的。 在此处输入图像描述

在控制台中打印是正确的: 在此处输入图像描述

标签: pythontkinter

解决方案


推荐阅读