【问题标题】:How to open a new window in tkinter python 3.7 having same functions as that of original window?如何在 tkinter python 3.7 中打开一个与原始窗口具有相同功能的新窗口?
【发布时间】:2019-09-16 06:03:11
【问题描述】:

我正在编写 tkinter python v3.7 中的代码,我想在其中打开一个新窗口,该窗口具有与原始窗口相同的功能。我该怎么做?

在寻找解决方案时,我遇到了名为 Toplevel 的函数,它创建了新的 tkinter 窗口。但是这个新窗口是全新的,它没有原始窗口中提供的功能(按钮,在我的例子中是几何尺寸)。

from tkinter import *
class TextPad:

    def new_window(self):
        top = Toplevel()

    def __init__(self, master):
        master.title('Text Pad')
        master.geometry('400x400')

    self.button = Button(master, text='Press', 
                             command=self.new_window)
    self.button.pack()

root = Tk()
t = TextPad(root)
root.mainloop()

我的原始窗口的几何尺寸为“400x400”并且它有“按钮”,我想打开一个具有此功能的新窗口。

【问题讨论】:

  • TextPad(Toplevel()) 。如果你想要相同的窗口,那么你必须再次使用TextPad(),但这种方式使用Toplevel() 而不是Tk()

标签: python python-3.x tkinter python-3.7


【解决方案1】:

我假设您同时需要两个(或更多)窗口。

如果您想要相同的窗口,请再次使用TextPad()

但这次使用Toplevel() 而不是Tk()

def new_window(self):
    top = TextPad(Toplevel()) 

不要跑第二个mainloop()


如果您想用新窗口替换第一个窗口 - 总是只有一个窗口 - 那么您必须销毁旧窗口,然后使用 TextPad()Tk()mainloop() 创建新窗口

但它需要使用self.master 而不是master 才能在方法new_window 中访问master

from tkinter import *

class TextPad:

    def new_window(self):
        self.master.destroy()

        root = Tk()
        t = TextPad(root)
        root.mainloop()

    def __init__(self, master):
        self.master = master
        self.master.title('Text Pad')
        self.master.geometry('400x400')

        self.button = Button(self.master, text='Press', 
                             command=self.new_window)
        self.button.pack()

root = Tk()
t = TextPad(root)
root.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 2018-05-11
    • 1970-01-01
    • 2021-09-24
    • 2015-09-30
    • 1970-01-01
    相关资源
    最近更新 更多