【问题标题】:Python tkinter moving buttons to 1 window instead of 2Python tkinter 将按钮移动到 1 个窗口而不是 2 个
【发布时间】:2018-03-06 16:48:43
【问题描述】:

我的问题是关于 Python 2.7 tkinter。困难在于将所有按钮都放在一个窗口中,现在它打开了 2 个窗口,一个窗口是我定义的大小,一个是所有按钮都没有定义大小的窗口。

    from Tkinter import *

master = Tk()

class Calculator:
    def __init__(self,master):
        self.var = IntVar()
        frame = Frame(master)
        frame.grid()
        f2 = Frame(master,width=500,height=500)
        f2.grid(row=0,column=1)


def callback():
    print("Hello World")

b = Button(master, text="Calc", command=callback)
b.grid()


e = Entry(master, width=10)
e.grid()

e.focus_set()

b1 = Button(master, text = "Ok", width=10, command = callback)
b1.grid(row=20, column=30)


top = Tk()
app = Calculator(top)
mainloop()

【问题讨论】:

  • 您不能在同一个程序中两次调用Tk()。如果您确实想要多个窗口,则必须使用 Toplevel() 代替除第一个以外的所有窗口。
  • 您正在创建两个窗口。为什么不干脆不创建第二个窗口?

标签: python python-2.7 user-interface tkinter


【解决方案1】:

Tkinter 只需要一个 Tk() 实例来启动 tkinter 应用程序,并且需要一个 mainloop() 实例来管理更新循环。

如果您多次致电Tk(),您将遇到多个窗口的问题,并且无法按您的意愿工作。

如果您确实需要第二个或更多窗口,那么您需要使用Toplevel() 来创建它们。

如果你删除:

top = Tk()

并改变:

app = Calculator(top)

到:

app = Calculator(master)

您将按预期将所有内容都放在一个窗口中。

【讨论】:

  • 谢谢,我希望我有更好的声誉,所以我可以投票:-D
  • 很高兴为您提供帮助。请记住,您的问题相对常见,并且已以各种形式提出。下次您应该尝试搜索堆栈溢出以查找类似问题。 Tkinter is opening 2 windows. I dont know why 例如。是一个很常见的问题。
猜你喜欢
  • 2018-04-03
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 2014-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多