почему комбинированный список отображается в каждом кадре, а не только в том кадре, в котором он написан? - PullRequest
0 голосов
/ 24 сентября 2019

Я новичок в программировании на Python.В данный момент я пытаюсь создать приложение с несколькими окнами, и одно из них должно иметь комбинированный список.Я реализовал различные окна, и они прекрасно работают, но в тот момент, когда я добавляю Combobox в «Page Two», он отображается в каждом случае, независимо от того, какая страница находится на нем.Я пытался перейти с Pack-Manager на Grid-Manager, но это ничего не меняет.

import tkinter as tk
from tkinter import ttk, StringVar

LARGE_FONT =('Verdana',12)

class Auswertung(tk.Tk):

    def __init__(self,*args, **kwargs):

        tk.Tk.__init__(self,*args,**kwargs)
        container = tk.Frame(self)

        container.grid(row=0, column=1, padx=10, pady=10)

        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)

        self.frames = {}
        for F in (StartPage,PageOne,PageTwo):
            frame = F(container,self)

            self.frames[F] = frame

            frame.grid(row=0, column=0, sticky='nsew')

        self.show_frame(StartPage)

    def show_frame(self,cont):

        frame = self.frames [cont] 
        frame.tkraise()  

class StartPage(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self,parent)
        label=tk.Label(self, text='Start Page', font=LARGE_FONT)
        label.grid(row=0, column=1, padx=10, pady=10 )

        button1 = tk.Button(self, text= 'Visit Page 1', 
                            command= lambda : controller.show_frame(PageOne))
        button1.grid(row=1, column=1, padx=10, pady=10)

        button2 = tk.Button(self, text= 'Visit Page 2', 
                            command= lambda : controller.show_frame(PageTwo))
        button2.grid(row=2, column=1, padx=10, pady=10)


class PageOne(tk.Frame):
    def __init__(self,parent,controller): 
        tk.Frame.__init__(self,parent)     

        label=tk.Label(self, text='Page one', font=LARGE_FONT)
        label.grid(row=0, column=1, padx=10, pady=10)

        button1 = tk.Button(self, text= 'Back to Home', 
                            command= lambda : controller.show_frame(StartPage))
        button1.grid(row=1, column=1, padx=10, pady=10)

        button2 = tk.Button(self, text= 'Page Two', 
                            command= lambda : controller.show_frame(PageTwo))
        button2.grid(row=2, column=1, padx=10, pady=10)

        button3 = tk.Button(self, text= 'Page Two', 
                            command= lambda : controller.show_frame(PageTwo))
        button3.grid(row=3, column=1, padx=10, pady=10)        

class PageTwo (tk.Frame):
    def __init__(self,parent,controller): 
        tk.Frame.__init__(self,parent)     

        label=tk.Label(self, text='Page 2', font=LARGE_FONT)
        label.grid(row=0, column=1, padx=10, pady=10 )
        box_value=''
        button1 = tk.Button(self, text= 'Back to Home', 
                            command= lambda : controller.show_frame(StartPage))
        button1.grid(row=1, column=1, padx=10, pady=10)

        button2 = tk.Button(self, text= 'Go to Page 1', 
                            command= lambda : controller.show_frame(PageOne))
        button2.grid(row=2, column=1, padx=10, pady=10)

        ddMenu = ttk.Combobox(textvariable = box_value ,values=[
            "Big Value List I didnt want to copy" 
            ]
            )
        ddMenu.grid(row=2, column=1, padx=10, pady=10)

app = Auswertung()
app.mainloop()

Все 3 кадра

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...