python-3.x - 如何正确地从 pack() 切换到 place()
问题描述
我将我的 tkinter gui 分成不同的类,并希望在主屏幕中使用按钮将它们连接起来,就像 Steven M. Vascellaro 在这里所做的那样:在 tkinter 中的两个帧之间切换
import tkinter.ttk as ttk
#from alexa_site_2 import Frame_alexa
from globals import Globals
from tkinter import PhotoImage
import tkinter as tk
class SampleApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self._frame = None
self.geometry('{}x{}'.format(1024, 600))
self.configure(bg="white")
for i in range(len(Globals.image_files)):
image_box = PhotoImage(file=Globals.image_files[i])
Globals.list_images.append(image_box)
self.switch_frame(StartPage)
def switch_frame(self, frame_class):
"""Destroys current frame and replaces it with a new one."""
new_frame = frame_class(self)
if self._frame is not None:
self._frame.destroy()
self._frame = new_frame
self._frame.place(x=110,y=0)
print("switch frame function")
class StartPage(ttk.Frame):
def __init__(self, master):
ttk.Frame.__init__(self, master)
#self.place(x=0,y=0)
ttk.Label(self, text="This is the start page").pack()
ttk.Button(self, text="Open page one",
command=lambda: master.switch_frame(PageOne)).pack()
ttk.Button(self, text="Open page two",
command=lambda: master.switch_frame(PageTwo)).pack()
ttk.Button(self, text="Open page two",
command=lambda: master.switch_frame(Frame_alexa)).pack()
class PageOne(ttk.Frame):
def __init__(self, master):
ttk.Frame.__init__(self, master)
ttk.Label(self, text="This is page one").pack(side="top", fill="x", pady=10)
ttk.Button(self, text="Return to start page",
command=lambda: master.switch_frame(StartPage)).pack()
class PageTwo(ttk.Frame):
def __init__(self, master):
ttk.Frame.__init__(self, master)
ttk.Label(self, text="This is page two").place(x=40,y=10)
ttk.Button(self, text="Return to start page",
command=lambda: master.switch_frame(StartPage)).place(x=0,y=0)
if __name__ == "__main__":
app = SampleApp()
app.mainloop()
当我尝试连接我自己的课程时,我得到一个白色窗口。您可以在 pageOne 中看到它在工作,在 PageTwo 中看到我的问题。我不打算混合 place() 和 pack()。我只需要 place() 和你的帮助。
解决方案
推荐阅读
- swift - 使用 Swift 4 只允许字母之间的特殊字符和空格
- python - 刮,刮链接,然后刮页面
- c - 为什么strcmp不返回0
- c# - 如何从 MS Graph API 返回用户特定信息?
- javascript - 映射对象属性并转换为字符串
- elixir - Elixir Redix 基于名称的池示例 - 主管签名不存在
- twilio - 通话挂断前的Twilio api播放消息
- excel - 在日期类型标题上使用 INDIRECT()
- python - 如果匹配,我需要比较 2 个不同数据帧的 2 个字段,我们需要填充详细信息,否则在 python 中填充空值
- node.js - 无法使用 ReactJs MongoDB NodeJS 删除项目