当我点击按钮两次时程序停止

瓦利德·布塞塔
from tkinter import *

def page2():
    root1.destroy()
    import page2

root1 = Tk()
root1.geometry("300x150+177+180")
Label(root1, text="Hi I am page 1").pack()
Button(root1, text="Page 2", command=page2).pack()
root1.mainloop()

和第 2 页:

from tkinter import *

def page1():
    root2.destroy()
    import page1

root2 = Tk()
root2.geometry("300x150+177+180")
Label(root2, text="Hi I am page 2").pack()
Button(root2, text="Page 1", command=page1).pack()
root2.mainloop()

该程序运行良好,但当您使用该按钮两次时,程序停止。

约瑟兰

正如 Kevin 所提到的,该import语句只导入一次。简单的解决方案是替换import page2os.system("python page2.py"). 但是每次切换页面时都会生成一个新的 Python 进程......

相反,您可以根据此处显示的结构将应用程序的每个页面定义为一个类,并将它们保存在不同的文件中。

页面1.py

import tkinter as tk

class Page1(tk.Frame):
    def __init__(self, controller):
        tk.Frame.__init__(self, controller)
        tk.Label(self, text="Hi I am page 1").pack()
        tk.Button(self, text="Page 2", 
                  command=lambda:controller.show_page("Page2")).pack()

page2.py

import tkinter as tk

class Page2(tk.Frame):
    def __init__(self, controller):
        tk.Frame.__init__(self, controller)
        tk.Label(self, text="Hi I am page 2").pack()
        tk.Button(self, text="Page 1", 
                  command=lambda:controller.show_page("Page1")).pack()

控制器文件:

import tkinter as tk
from page1 import Page1
from page2 import Page2

class App(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.pages = {}
        # Create 2 overlapping pages
        for P in [Page1, Page2]:
            page = P(self)
            page.grid(row=0, column=0, sticky="nsew")
            self.pages[P.__name__] = page
        self.show_page("Page1")

    def show_page(self, frameName):
        self.pages[frameName].lift()

# Launch the app
app = App()
app.mainloop()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当我点击按钮时,我的提示出现两次

Angular:当我点击一个按钮两次时,我如何去不同的路线?

如何修复“当我在漂亮的对话框按钮上单击两次时进行两次打印”

禁用后退按钮,但当点击两次时退出应用程序以响应本机

当我两次单击链接/按钮时,才触发函数的单击

如何防止两次设置我的点击处理程序?

当我的应用程序打开时,单击三星设备上的内置菜单按钮会响两次

PushViewController两次当我双击速度太快时

当我点击按钮时应用程序关闭

在开始按钮上单击两次时,我的 JS 计时器时钟没有停止

如何停止按钮被触发两次

当我单击按钮时,应用程序停止

如何在执行“console.readline();”时阻止我的 C# 控制台程序停止 两次

单击两次按钮时如何停止Mediaplayer两次播放音频文件

为什么在这个应用程序中按钮点击会发生两次?

在点击事件触发前,我必须单击“取消”按钮两次

我如何在一个按钮中实现两次点击?

当我单击按钮两次qgridlayoutwidget变得怪异的Python

当我单击某个链接两次时,我的网站崩溃

当我点击它时按钮消失

当我点击我的一项活动的返回按钮时,我的应用程序崩溃

我的点击处理程序在React中以不同的值触发了两次

当我运行两次代码(在While / DoWhile之后)时,scanf无法正常工作。(我正在使用Visual C ++ Windows控制台应用程序)

打开键盘时我需要点击两次-React native

当我尝试使用两次时,Scanner.nextLine()不返回任何内容

当我重新访问页面时,订阅触发两次

当我两次单击日期时,bootstrap datepicker无效的日期问题?

ValueError:未转换的数据仍然存在:当我想比较两次时:00

当我两次调用set_union时,结果错误