Canvas on frames & Переключение между кадрами с помощью кнопок - PullRequest
0 голосов
/ 04 июня 2019

Я новичок в Python и Tkinter, пожалуйста, учтите мои глупые ошибки, если таковые имеются.Код, который я прилагаю, является обобщенной и более простой версией, чтобы ее можно было просто протестировать.Как только я буду в порядке с этим, подготовит код приложения.У меня есть два кадра, у которых есть родитель в качестве окна корневой геометрии.Каждый кадр имеет много холстов, нарисованных в моем основном приложении, но я рисую только один образец прямоугольника в моем вопросе, чтобы сделать его коротким.Моя проблема заключается в том, что когда я рисую два холста на двух разных кадрах, при запуске программы оба появляются одновременно.

import tkinter as tk
from tkinter import ttk
from tkinter import font
from tkinter import *

root=tk.Tk()
root.geometry("550x550")

Crel='groove'
Cbw=3
h=50
w=50

#####Frame 1 & rectangle Canvas drawn########
Cparent=ttk.Frame(root,height=200,width=200)
Cparent.pack()
hallname=tk.Canvas(Cparent,height=h,width=w,relief=str(Crel),
                   borderwidth=int(Cbw))
hallname.place(x=150,y=150)

#####Frame 2 & rectangle Canvas drawn########
Cparent2=ttk.Frame(root,height=200,width=200)
Cparent2.pack()
hallname1=tk.Canvas(Cparent2,height=h,width=w,relief=str(Crel),
                    borderwidth=int(Cbw))
hallname1.place(x=30,y=30)

#####Function to switch frames########
def pushbut(obj):
    obj.tkraise(obj)

#####Buttons size and font#######
buttonnamefont=font.Font(root,family="Helvetica",size=10,weight="bold") 
Details=Button(root,text='Details',font=buttonnamefont,
                command=lambda:pushbut(Cparent))
Overview=Button(root,text='Overview',font=buttonnamefont,
                command=lambda:pushbut(Cparent2))
Overview.place(x=300,y=520)
Details.place(x=100,y=520)

Cparent.tkraise()
root.update()

Если я пытаюсь показать один кадр, используя функцию tkraise, другой кадр также отображается.

Что касается переключения кадров, я сделал две кнопки и попытался переключаться между кадрамииспользуя функцию lamba, но не смогПожалуйста, дайте мне знать за мелкие идиотские ошибки, если я их совершил;)

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