当前位置: 首页 > 面试题库 >

使用Tkinter中的按钮导航到应用程序的不同页面?

洪鸿博
2023-03-14
问题内容

我在这里有一个很简单的问题。在Tkinter(python)中,我想知道谁使用按钮来转到应用程序的不同页面,例如注册页面和登录页面。我知道GUI没有网站那样的“页面”,尽管我看到了几种不同的方法,但是建立到不同页面的链接的最佳方法是什么?

非常感谢大家!


问题答案:

使每一页成为框架。然后,所有按钮所需要做的就是隐藏可见的内容,然后使所需的帧可见。

一种简单的方法是将框架彼此堆叠(这是place有意义的一次),然后堆叠lift()要显示的框架。当所有页面大小相同时,此技术效果最佳。实际上,它要求您显式设置包含框架的大小。

以下是一个人为的示例。这不是解决问题的唯一方法,只是证明它不是特别难解决的问题:

import Tkinter as tk

class Page(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
    def show(self):
        self.lift()

class Page1(Page):
   def __init__(self, *args, **kwargs):
       Page.__init__(self, *args, **kwargs)
       label = tk.Label(self, text="This is page 1")
       label.pack(side="top", fill="both", expand=True)

class Page2(Page):
   def __init__(self, *args, **kwargs):
       Page.__init__(self, *args, **kwargs)
       label = tk.Label(self, text="This is page 2")
       label.pack(side="top", fill="both", expand=True)

class Page3(Page):
   def __init__(self, *args, **kwargs):
       Page.__init__(self, *args, **kwargs)
       label = tk.Label(self, text="This is page 3")
       label.pack(side="top", fill="both", expand=True)

class MainView(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
        p1 = Page1(self)
        p2 = Page2(self)
        p3 = Page3(self)

        buttonframe = tk.Frame(self)
        container = tk.Frame(self)
        buttonframe.pack(side="top", fill="x", expand=False)
        container.pack(side="top", fill="both", expand=True)

        p1.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
        p2.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
        p3.place(in_=container, x=0, y=0, relwidth=1, relheight=1)

        b1 = tk.Button(buttonframe, text="Page 1", command=p1.lift)
        b2 = tk.Button(buttonframe, text="Page 2", command=p2.lift)
        b3 = tk.Button(buttonframe, text="Page 3", command=p3.lift)

        b1.pack(side="left")
        b2.pack(side="left")
        b3.pack(side="left")

        p1.show()

if __name__ == "__main__":
    root = tk.Tk()
    main = MainView(root)
    main.pack(side="top", fill="both", expand=True)
    root.wm_geometry("400x400")
    root.mainloop()


 类似资料:
  • 我在我的应用程序中使用底部导航,如下所示。 我想从底部导航的每个页面都有一个不同的(一些应用程序栏有不同的图标和标题。因此不能在AppMainPage中使用普通的应用程序栏)脚手架小部件内的AppBar如下所示。 主页appbar代码 我不确定我的代码实现是否符合我的要求,如果有人能在这方面提供帮助,我很高兴。

  • 我试图发送一个按钮点击到另一个应用程序,在这种情况下,它是一个Java的应用程序。我使用的是FindWindow()。我可以使用SendKeys。发送密钥到应用程序窗口,但是当我尝试单击注册按钮时,Findwindowex()返回0作为按钮指针。我唯一的想法是,也许FindWindowEx()不喜欢父句柄和子句柄相同,但在这种情况下没有子窗口句柄。任何帮助都将不胜感激。

  • 本文向大家介绍iOS应用开发中导航栏按钮UIBarButtonItem的添加教程,包括了iOS应用开发中导航栏按钮UIBarButtonItem的添加教程的使用技巧和注意事项,需要的朋友参考一下 1、UINavigationController导航控制器如何使用 UINavigationController可以翻译为导航控制器,在iOS里经常用到。 我们看看它的如何使用: 下面的图显示了导航控制器

  • 问题内容: 我正在使用react native导航(react- navigation)StackNavigator。它从应用程序整个生命周期的“登录”页面开始。我不想使用返回选项,返回“登录”屏幕。有谁知道登录屏幕后如何将其隐藏在屏幕上?顺便说一句,我也使用以下命令将其隐藏在登录屏幕中: 问题答案: 1)要使后退按钮在react-navigation v2或更高版本中消失: 2)如果您要清理导航

  • 我试图建立一个简单的自动点击程序,它有开始/停止按钮和热键(使用Tkinter和Pynput)。每当我用“开始”按钮启动自动点击器时,它都能正常工作,我也能停止它。但是,当我用热键启动自动点击器时,我不能用停止按钮停止它,因为它会冻结整个程序。 这是我的GUI主类: 这些是我的Clicker和键盘课程: 有人知道为什么在使用热键后按下停止按钮时会冻结吗?

  • 问题内容: 我已经处理了好几天了,希望能有所帮助。我用导入的模块tkinter,numpy,scipy,matplotlib开发了一个GUI应用程序,该模块在python本身中运行良好。转换为exe后,一切都按预期工作,但matplotlib节则无效。当我按定义的绘图按钮时,exe只是关闭而没有显示任何绘图。因此,我想举一个最小的例子,我只绘制了一个sin函数,而我面临着同样的问题:在python