【问题标题】:Second Window is blank after a button was clicked in Main Window在主窗口中单击按钮后,第二个窗口为空白
【发布时间】:2016-11-19 17:57:51
【问题描述】:

我有两个 python 文件,第一个包含 mainWindow,第二个 python 文件包含另一个窗口。我设法使第二个窗口出现,但窗口出现后是空白的。这是错误的屏幕截图。

这是单击“配置”按钮后应显示的内容。

在主窗口文件中,我这样定义代码:

from tkinter import *
import configureUAHChange as cA

class TracingInterface(Frame):
    def __init__(self, master):
        super().__init__()
        root.minsize(width=700, height=520)
        root.maxsize(width=700, height=520)
        Frame.__init__(self, master)
        Grid.config(self)
        self.TracingMethod()
        self.logDetails()
        self.otherFunctionInterface()
        # Default window state
        self._configureUA_window = None

    def UAconfig_window(self):
        if self._configureUA_window is not None:
            return
        self._configureUA_window =cA.ConfigureUAinterface(self)

    def closeUA(self):
        # Destroy the 2nd and reset the value to None
        if self._configureUA_window is not None:
            self._configureUA_window.destroy()
            self._configureUA_window = None

此行用于按钮单击命令:

self.configUAButton = Button(self.radioframe, text="Configuration",command=self.UAconfig_window)

接下来,这是我在第二个 python 文件中定义函数的方式

class ConfigureUAinterface(Toplevel):
def __init__(self, master):
    super().__init__(master)
    master.minsize(width=700, height=520)
    master.maxsize(width=700, height=520)

    Frame.__init__(self, master)
    Grid.config(self)

    master.title("UA Configuration")

    #Pre define combobox value in case suggestion
    self.value_of_combo='Identity Theft'

    #Run the all Function
    self.DateSelection()
    self.finish()
    self.UASuggestion()
    self.ConfigurationUA()
    self.suggestionCombo()

请告诉我如何修改我的代码来解决上述错误。

这是主窗口的完整编码:https://drive.google.com/open?id=1KKgYPbGMNNWBfPVazHfcM_NSFlv5eEpKg3_uXsvQsNE

这是第二个窗口的完整编码:https://drive.google.com/open?id=1LuqJXIUrDMLfuz8gnZynZXUN6-SvFAyw9c-puJ3REPQ

【问题讨论】:

    标签: python tkinter interface window toplevel


    【解决方案1】:

    1) 我认为TracingInterface 的__init__ 函数中有一些root 应该是master。

    2) 你传递给ConfigureUAinterface 的master 不是一个窗口,而是一个TracingInterface,它是一个框架,没有minsize、maxsize 和title 方法。

    3) 我不知道你为什么使用Frame.__init__(self, master) 而ConfigureUAinterface 继承自Toplevel。

    编辑: 主窗口的变化:

    class TracingInterface(Frame):
        def __init__(self, master):
            super().__init__()
    
            # 1) master instead of root (it was just a typo I think)
            master.minsize(width=700, height=520)
            master.maxsize(width=700, height=520)
            # Frame.__init__(self, master): redundant with super().__init__()
            Grid.config(self)
            self.TracingMethod()
            self.logDetails()
            self.otherFunctionInterface()
            # Default window state
            self._configureUA_window = None
    
        def UAconfig_window(self):
            if self._configureUA_window is not None:
                return None
            # 2) changed self which is a frame to the actual window self.master
            self._configureUA_window = cA.ConfigureUAinterface(self.master)
    

    第二个窗口的变化:

    class ConfigureUAinterface(Toplevel):
        def __init__(self, master):
            super().__init__(master)
            # replaced master by self since it's the Toplevel size we want to limit
            self.minsize(width=700, height=520)
            self.maxsize(width=700, height=520)
    
            # 3) The following is inapropriate since the widget 
            #    inherit from Toplevel, not Frame:
            #  Frame.__init__(self, master)
            #  Grid.config(self)
    
            # replaced master by self since it's the Toplevel title
            self.title("UA Configuration")
    
            #Pre define combobox value in case suggestion
            self.value_of_combo='Identity Theft'
    
            #Run the all Function
            self.DateSelection()
            self.finish()
            self.UASuggestion()
            self.ConfigurationUA()
            self.suggestionCombo()
    

    我没有修改代码中的任何其他内容,当我尝试时,它起作用了。

    【讨论】:

    • 如果我想更改编码,我该如何根据您的建议进行修改,问候
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多