python-3.x - 为什么组合框显示在每一帧中,而不是只显示在它写入的帧中?
问题描述
我是 python 编程新手。目前我正在尝试构建一个具有多个窗口的应用程序,其中一个应该有一个组合框。我实现了不同的窗口,它们工作得很好,但是当我将组合框添加到“第二页”时,无论我在哪个页面上,它都会在每个实例中显示。我尝试从 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()
解决方案
推荐阅读
- javascript - vue如何让v-for返回一个词加上前一个词
- c# - 使用 Open XML SDK 更新页眉和页脚中的内容控制文本
- linux - 无法在 Linux 中打开目录,但我绝对可以“ls”显示它
- python - 我可以在 Django 中使多个子模型“可爱”吗?
- bash - 使用 AWK 计算文件中特定字母的比例
- php - Microsoft Graph API(日历)间歇性 503 错误
- asp.net-core - 有什么方法可以离线使用 NToasNotify 吗?
- flutter - 无效的 radix-10 数字(在字符 1 处)//flutter-update-4bb0a-default-rtdb.firebaseio.com/ ^
- python-3.x - 如何使用 numpy 和 python 计算小批量 SGD?
- javascript - OpenLayers 中的卫星视图 - 如何设置?