0

这是我的代码:

import sys
from tkinter import *


#first new screen
def next_screen(names):
    for widget in names:
        widget.place_forget()
        buttonhyp = Button (text = "button1",fg = "blue",command = hypoténusegetdef())
        buttonhyp.grid (row = 1,column = 2)

def forget_page1():
    widgets = [mLabel1, button]
    next_screen(widgets)

################################################################################

def hypténusegetdef ():
    widgets1 = [buttonhyp]
    nextscreen1(widgets1)

def next_screen(names):
    for widget in names:
        widget.place_forget() 
        hyplabel1 = Label (text = "This is my text")








#first page things
mGui = Tk ()

mGui.geometry("600x600+545+170")
mGui.title("MyMathDictionary")
mLabel1 = Label (text = "Welcome to MyMathDictionary. Press Next to continue.",
                 fg = "blue",bg = "white")
mLabel1.place (x= 150,y = 200)

button = Button (text = "Next", command = forget_page1 )
button.place(x = 275,y = 230)




mGui.mainloop()

我要做的是打开程序并让用户单击“下一步”,然后显示另一个名为“button1”的按钮,当用户单击“button1”时,它会显示一个名为 which在我的代码中说“这是我的文本”。但是当我运行它时,我单击“下一步”并且没有显示任何内容我检查并重新检查但似乎没有任何工作。任何帮助将不胜感激。

#
4

1 回答 1

1

我不是专家,但我会尝试一下。

首先,import sys没有必要。from tkinter import*并且不推荐使用从 tkinter 模块导入所有对象。您应该使用import tkinterorimport tkinter as tk来避免意外后果。

您有 2 个具有相同名称的函数。next_screen(names)这不应该发生。

而不是widgets = [mLabel1, button]用来隐藏小部件,您应该将它们放在一个框架中,以便您可以使用它winfo_children()来查找所有子小部件。

您应该parent widget name在创建按钮和标签时​​放置。例如,

import tkinter as tk
root = tk.Tk()
mylabel = tk.Label(root,text='this is a label')
mylabel.pack()
root.mainloop()

在您的第一个next_screen(names)函数中,您曾经grid method显示按钮。你不应该混合grid methodplace method

这是我想出的

import tkinter as tk

def Screen_1():
    Clear(myframe) 
    mybutton2= tk.Button(myframe,text = "Button1", command = Screen_2)
    mybutton2.pack()

def Screen_2():
    Clear(myframe)
    mylabel2= tk.Label(myframe,text = "This is my text",fg = "blue",bg = "white")
    mylabel2.pack(side='top')

def Clear(parent):
    for widget in parent.winfo_children():
        widget.pack_forget()

root =tk.Tk()

myframe=tk.Frame(root)
myframe.pack()

mylabel1= tk.Label(myframe,text = "Welcome to MyMathDictionary. Press Next to continue.",fg = "blue",bg = "white")
mylabel1.pack(side='top')

mybutton1= tk.Button(myframe,text = "Next", command = Screen_1)
mybutton1.pack(side='bottom')

root.mainloop()

希望能帮助到你!

于 2013-08-19T07:05:55.993 回答