Python tkinter窗口在执行代码后为空

Python tkinter窗口在执行代码后为空,python,tkinter,Python,Tkinter,我开始用Python编写代码,在我的第一个应用程序中,我遇到了麻烦。如果您有任何关于此代码为什么不显示小部件的帮助,我们将不胜感激 import tkinter from tkinter import * from tkinter import ttk from tkinter import messagebox class ImprintPlusApp: def _init_(self, master): self.frame_header = ttk.Frame(

我开始用Python编写代码,在我的第一个应用程序中,我遇到了麻烦。如果您有任何关于此代码为什么不显示小部件的帮助,我们将不胜感激

import tkinter
from tkinter import *
from tkinter import ttk
from tkinter import messagebox

class ImprintPlusApp:

    def _init_(self, master):
        self.frame_header = ttk.Frame(master)
        self.frame_header.pack()

        ttk.Label(self.header_frame, text = "Bienvenidos a Imprint Plus Manager")

        self.frame_crearorden = ttk.Frame(master)
        self.frame_crearorden.pack()

        ttk.Label(self.frame_crearorden, text = "Nombre").grid(row = 0, column = 0, padx = 5)
        ttk.Label(self.frame_crearorden, text = "Email").grid(row = 2, column = 0, padx = 5)
        ttk.Label(self.frame_crearorden, text = "Numero Cel/Tel").grid(row = 4, column = 0, padx = 5)
        ttk.Label(self.frame_crearorden, text = "Información Adicional").grid(row = 6, column = 0, padx = 5)

        self.entry_name = ttk.Entry(self.frame_crearorden, width = 24)
        self.entry_email = ttk.Entry(self.frame_crearorden, width = 24)
        self.entry_numtc = ttk.Entry(self.frame_crearorden, width = 24)
        self.entry_addinf = Text(self.frame_crearorden, width = 50, height = 10)

        self.entry_name.grid(row = 0, column = 1, padx = 5)
        self.entry_email.grid(row = 2, column = 1, padx = 5)
        self.entry_numtc.grid(row = 4, column = 1, padx = 5)
        self.entry_addinf.grid(row = 7, column = 0, columnspan = 2, padx = 5)

        ttk.Button(self.frame_crearorden, text = "Submit", command = self.submit).grid(row = 8, columnspan = 1, padx = 5)
        ttk.Button(self.frame_crearorden, text = "Clear", command = self.clear).grid(row = 8, columnspan = 0, padx = 5)

    def submit(self):
        print ("Nombre: {}".format(self.entry_name.get()))
        print ("Email: {}".format(self.entry_name.get()))
        print ("Num Cel/Tel: {}".format(self.entry_name.get()))
        print ("Información Adicional: {}".format(self.entry_name.get(1.0, "end")))
        self.clear()
        messagebox.showinfo(tite = "Orden #", message = "Orden Guardada")

    def clear(self):
        self.entry_name.delete(0, "end")
        self.entry_email.delete(0, "end")
        self.entry_numtc.delete(0, "end")
        self.entry_addinf.delete(1.0, "end")


def main():
    root = Tk()
    app = ImprintPlusApp()
    root.mainloop()

if __name__ == '__main__':
    main() 

每次启动代码时,我都会看到一个空白的tkinter窗口。

这有一些问题

  • 您有一个
    \u init\u
    方法,而不是
    \u init\u
    方法,因此创建的对象没有被初始化
  • 您必须使用
    app=printplusapp(root)
    将root
    tkinter
    对象发送到应用程序
  • 您有一次
    self.header\u frame
    而不是
    self.frame\u header
  • 您有一个
    列span=0
    (这是无效的),而不是
    列span=1
    (实际上不需要指定)
  • 我在下面的代码中做了上述更改。它可能仍然需要调试,因为我不知道您想要的是什么设计

    import tkinter
    from tkinter import *
    from tkinter import ttk
    from tkinter import messagebox
    
    class ImprintPlusApp:
    
        def __init__(self, master):
            self.frame_header = ttk.Frame(master)
            self.frame_header.pack()
    
            ttk.Label(self.frame_header, text = "Bienvenidos a Imprint Plus Manager")
    
            self.frame_crearorden = ttk.Frame(master)
            self.frame_crearorden.pack()
    
            ttk.Label(self.frame_crearorden, text = "Nombre").grid(row = 0, column = 0, padx = 5)
            ttk.Label(self.frame_crearorden, text = "Email").grid(row = 2, column = 0, padx = 5)
            ttk.Label(self.frame_crearorden, text = "Numero Cel/Tel").grid(row = 4, column = 0, padx = 5)
            ttk.Label(self.frame_crearorden, text = "Información Adicional").grid(row = 6, column = 0, padx = 5)
    
            self.entry_name = ttk.Entry(self.frame_crearorden, width = 24)
            self.entry_email = ttk.Entry(self.frame_crearorden, width = 24)
            self.entry_numtc = ttk.Entry(self.frame_crearorden, width = 24)
            self.entry_addinf = Text(self.frame_crearorden, width = 50, height = 10)
    
            self.entry_name.grid(row = 0, column = 1, padx = 5)
            self.entry_email.grid(row = 2, column = 1, padx = 5)
            self.entry_numtc.grid(row = 4, column = 1, padx = 5)
            self.entry_addinf.grid(row = 7, column = 0, columnspan = 2, padx = 5)
    
            ttk.Button(self.frame_crearorden, text = "Submit", command = self.submit).grid(row = 8, columnspan = 1, padx = 5)
            ttk.Button(self.frame_crearorden, text = "Clear", command = self.clear).grid(row = 8, columnspan = 1, padx = 5)
    
        def submit(self):
            print ("Nombre: {}".format(self.entry_name.get()))
            print ("Email: {}".format(self.entry_name.get()))
            print ("Num Cel/Tel: {}".format(self.entry_name.get()))
            print ("Información Adicional: {}".format(self.entry_name.get(1.0, "end")))
            self.clear()
            messagebox.showinfo(tite = "Orden #", message = "Orden Guardada")
    
        def clear(self):
            self.entry_name.delete(0, "end")
            self.entry_email.delete(0, "end")
            self.entry_numtc.delete(0, "end")
            self.entry_addinf.delete(1.0, "end")
    
    
    def main():
        root = Tk()
        app = ImprintPlusApp(root)
        root.mainloop()
    
    if __name__ == '__main__':
        main() 
    

    非常感谢你的帮助!这解决了我的问题。