【问题标题】:calling functions in one another in python在python中相互调用函数
【发布时间】:2020-06-05 17:08:31
【问题描述】:

我正在学习 python 并且卡在了一个地方,我想在单击 tkinter 中的按钮时将第二个函数中的第一个函数和第二个函数调用到第一个函数中,但是由于 python 中的排序,我无法做到这一点.请忽略函数后的结尾部分。

from tkinter import *
log = Tk()

log.config(bg="grey")
log.resizable(False, False)
log.title("this is gui python")
log.geometry("800x500")
log.resizable(False, False)
frame = LabelFrame(log, bg="blue", width=200, height=500, padx=0, pady=0).place(x=0, y=0)

def sign_up():
    global log
    log.config(bg="grey")
    log.resizable(False, False)
    log.title("this is gui python")
    log.geometry("800x500")
    log.resizable(False, False)
    frame = LabelFrame(log, bg="blue", width=200, height=500, padx=0, pady=0).place(x=0, y=0)
    B1 = Button(frame, text="login window", width=27, bg="violet", pady=10, command=signin_window).place(x=1, y=0)
    B2 = Button(frame, text="sign up window", width=27, bg="violet", pady=10).place(x=1, y=0)

def signin_window():
    global log
    log.config(bg="grey")
    log.resizable(False, False)
    log.title("this is gui python")
    log.geometry("800x500")
    log.resizable(False, False)
    frame = LabelFrame(log, bg="blue", width=200, height=500, padx=0, pady=0).place(x=0, y=0)
    B1 = Button(frame, text="login window", width=27, bg="violet", pady=10, relief=FLAT,).place(x=1, y=0)
    B2 = Button(frame, text="sign up window", width=27, bg="violet", pady=10, relief=FLAT, command=sign_up).place(x=1, y=50)


B1 = Button(frame, text="login window", width=27, bg="violet", relief=FLAT, pady=10, command=signin_window).place(x=1, y=0)
B2 = Button(frame, text="sign up window", width=27, bg="violet", relief=FLAT, pady=10).place(x=1, y=50)
l1 = Label(log, text="welcome to login window", font="haventica 30 bold", bg="grey").place(x=250, y=110)
l2 = Label(log, text="email", font="haventica 20", bg="grey").place(x=280, y=170)
l3 = Label(log, text="password", font="haventica 20", bg="grey").place(x=280, y=220)

e1 = Entry(log, width=40, borderwidth=3)
e1.place(x=430, y=170)

e2 = Entry(log, width=40, borderwidth=3)
e2.place(x=430, y=220)

log.mainloop()

【问题讨论】:

  • 欢迎来到 SO!我认为重组您的应用程序可能对您有利 - 为每个窗口(注册/登录)设置一个单独的框架可能更容易,以及选择这些框架的单一方法(like here) - 然后您可以设置每个按钮的command 来提升另一个窗口,而不是每次调用按钮时都重新创建小部件。 This 也可能相关
  • 谢谢你,汤姆这真的很有帮助。希望以后有更多问题的答案。

标签: python function class tkinter


【解决方案1】:

在 sign_up() 函数的这一部分中,您执行了以下操作:

    B1 = Button(frame, text="login window", width=27, bg="violet", pady=10, command=signin_window).place(x=1, y=0)

您向其分配命令“signin_windwow()”的位置。

你看到了吗?您在制作之前使用了命令 signin_windwow()!

所以只需切换 2 个命令就可以了。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2015-03-08
    • 1970-01-01
    • 2015-01-19
    • 2016-11-24
    • 2017-02-15
    • 2013-01-25
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    相关资源
    最近更新 更多