0

以下のコードには少し問題があります。基本的に、Enterボタンを押したときにwindow2を開くと同時にwindow1を閉じて、ウィンドウが2つではなく1つだけになるようにするコードが必要です。

コードは...

from tkinter import *  

def window1():

    window = Tk()
    window.title("Welcome")

    f = Frame()
    f.pack()

    label1 = Label(window, text = "Welcome to the random window")
    label1.pack()

    button1 = Button(window, text = "Enter...", command = window2)
    button1.pack()

def window2():

    screen = Tk()
    screen.title("Pop-Up!")

    fr = Frame()
    fr.pack()

    label2 = Label(screen, text = "This is a pop-up screen!")
    label2.pack()

    button2 = Button(screen, text = "Return", command = window1)
    button2.pack()

window1()
4

2 に答える 2

2

の 2 つのインスタンスを使用しているため、これは「悪い」ですTk。代わりにTopLevels を使用してみてください。

import tkinter as tk

def window1():
    window = tk.Toplevel(root)
    window.title("Welcome")

    # etc etc ...

    tk.Button(window,text="Enter...",command=lambda: window2(window)).pack()

def window2(old_window):
    old_window.destroy()
    # window2 stuff

root = tk.Tk()
root.iconify() # to minimize it, since we're just using Toplevels on top of it
window1()
root.mainloop()
于 2014-03-20T20:34:39.273 に答える
0

関数を使用しているときTk()は、Tcl/tkinter インタープリターの新しいインスタンスを作成しています。代わりToplevel()に、現在のインタープリターに新しいウィンドウを作成する which を使用してください。

于 2014-03-21T04:41:49.870 に答える