python - 为什么不显示 tkinter 窗口?
问题描述
我尝试构建一个学生管理系统,而在运行以下代码后此 tkinter 窗口不显示。有人可以在这里给一些建议吗?这是来自 youtube chanel 的公共源代码。
from tkinter import *
from tkinter import ttk
class Student:
def __init__(self,root):
self.root=root
self.root.title("student management system")
self.root.geometry("1350*700+0+0")
title=Label(self.root,text="Student Management System",bd=10,relief=GROOVE,front=("time new roman",40,"bold"),bg="yellow",fg="red")
title.pack(side=TOP,fill=X)
Manage_Frame=Frame(self.root,bd=4,relief=RIDGE,bg="crimson")
Manage_Frame.place(x=20,y=70,width=450,height=560)
#========Massage Frame===============================
Manage_Frame=Frame(self.root,bd=4,relief=RIDGE,bg="crimson")
Manage_Frame.place(x=20,y=100,width=450,height=560)
m_title=Label(Manage_Frame,text="Manage Students",bg="crimson",fg="white",front=("time new roman",30,"bold"))
m_title.grid(row=0,columnspan=2,pady=10)
lbl_roll = Label(Manage_Frame, text="Roll No.", bg="crimson", fg="white",front=("time new roman", 20, "bold"))
lbl_roll.grid(row=1, colum=0, pady=10,padx=20,sticky="w")
txt_roll = Entry(Manage_Frame,front=("time new roman", 15, "bold"),bd=5,relief=GROOVE)
txt_roll.grid(row=1, colum=2, pady=10, padx=20, sticky="w")
lbl_name = Label(Manage_Frame, text="Name", bg="crimson", fg="white", front=("time new roman", 20, "bold"))
lbl_name.grid(row=1, colum=0, pady=10, padx=20, sticky="w")
txt_name = Entry(Manage_Frame, front=("time new roman", 15, "bold"), bd=5, relief=GROOVE)
txt_name.grid(row=2, colum=1, pady=10, padx=20, sticky="w")
lbl_Email = Label(Manage_Frame, text="Email", bg="crimson", fg="white", front=("time new roman", 20, "bold"))
lbl_Email.grid(row=1, colum=0, pady=10, padx=20, sticky="w")
txt_Email = Entry(Manage_Frame, front=("time new roman", 15, "bold"), bd=5, relief=GROOVE)
txt_Email.grid(row=3, colum=0, pady=10, padx=20, sticky="w")
lbl_Gender = Label(Manage_Frame, text="Gender", bg="crimson", fg="white", front=("time new roman", 20, "bold"))
lbl_Gender.grid(row=4, colum=0, pady=10, padx=20, sticky="w")
combo_Gender=ttk.Combobox(Manage_Frame,front=("times new roman",20,"bold"))
combo_Gender['values']=("Male","Female","other")
combo_Gender.grid(row=4,colum=1,padx=20,pady=10)
lbl_Contact = Label(Manage_Frame, text="Contact", bg="crimson", fg="white", front=("time new roman", 20, "bold"))
lbl_Contact.grid(row=5, colum=0, pady=10, padx=20, sticky="w")
txt_Contact = Entry(Manage_Frame, front=("time new roman", 15, "bold"), bd=5, relief=GROOVE)
txt_Contact.grid(row=5, colum=1, pady=10, padx=20, sticky="w")
lbl_DOB = Label(Manage_Frame, text="DOB", bg="crimson", fg="white",front=("time new roman", 20, "bold"))
lbl_DOB.grid(row=6, colum=0, pady=10, padx=20, sticky="w")
txt_Contact = Entry(Manage_Frame, front=("time new roman", 15, "bold"), bd=5, relief=GROOVE)
txt_Contact.grid(row=6, colum=1, pady=10, padx=20, sticky="w")
lbl_address = Label(Manage_Frame, text="Address", bg="crimson", fg="white", front=("time new roman", 20, "bold"))
lbl_address.grid(row=6, colum=0, pady=10, padx=20, sticky="w")
txt_address = Entry(Manage_Frame, front=("time new roman", 15, "bold"), bd=5, relief=GROOVE)
txt_address.grid(row=6, colum=1, pady=10, padx=20, sticky="w")
#=========Button Frame=========
btn_Frame=Frame(Manage_Frame,bd=4,relief=RIDGE,bg="crimson")
btn_Frame.place(x=15, y=500, width=420)
Addbtn = Button(btn_Frame,text="add",width=10).grid(row=0,column=0,padx=10,pady=10)
Updatebtn = Button(btn_Frame, text="update", width=10).grid(row=0, column=1, padx=10, pady=10)
Deletebtn = Button(btn_Frame, text="delete", width=10).grid(row=0, column=2, padx=10, pady=10)
Clearbtn = Button(btn_Frame, text="clear", width=10).grid(row=0, column=3, padx=10, pady=10)
#=========Detail Frame=========
Detail_Frame = Frame(self.root, bd=4, relief=RIDGE, bg="crimson")
Detail_Frame.place(x=500, y=100, width=800, height=580)
lbl_search = Label(Detail_Frame, text="Search By", bg="crimson", fg="white", front=("time new roman", 20, "bold"))
lbl_search.grid(row=0, colum=0, pady=10, padx=20, sticky="w")
combo_search = ttk.Combobox(Manage_Frame,width=10,front=("times new roman", 13, "bold"),state="readonly")
combo_search['values'] = ("Roll", "Name", "contact")
combo_search.grid(row=0, colum=1, padx=20, pady=10)
txt_Search = Entry(Manage_Frame,width=15, front=("time new roman", 15, "bold"), bd=5, relief=GROOVE)
txt_Search.grid(row=6, colum=1, pady=10, padx=20, sticky="w")
searchbtn = Button(btn_Frame, text="Search", width=10).grid(row=0, column=3, padx=10, pady=10)
showallbtn = Button(btn_Frame, text="Show All", width=10).grid(row=0, column=4, padx=10, pady=10)
#=========Table Frame=========
Table_Frame = Frame(Detail_Frame, bd=4, relief=RIDGE, bg="crimson")
Table_Frame.place(x=10, y=70, width=760, height=500)
scroll_x=Scrollbar(Table_Frame,orient=HORIZONTAL)
scroll_y = Scrollbar(Table_Frame, orient=VERTICAL)
Student_table=ttk.Treeview(Table_Frame,columns=("roll","name","email","gender","contact","dob","Address"),xscollcommand=scroll_x.set,yscollcommand=scroll_y.set)
scroll_x.pack(side=BOTTOM,fill=X)
scroll_y.pack(side=RIGHT, fill=Y)
scroll_x.config(command=Student_table.xview)
scroll_y.config(command=Student_table.xview)
Student_table.heading("roll",text="Roll")
Student_table.heading("name", text="Name")
Student_table.heading("email", text="Email")
Student_table.heading("gender", text="Gender")
Student_table.heading("Contact", text="Contact")
Student_table.heading("D.O.B", text="D.O.B")
Student_table.heading("Address", text="Address")
Student_table['show']='headings'
Student_table.pack()
root=Tk()
解决方案
您必须初始化 Student 对象并将 root 传递给它。将此添加到代码的末尾以使其运行:
app=Student(root)
root.mainloop()
您当前的代码原样包含许多需要在运行前修复的语法错误。以下应该运行,尽管有一些视觉错误:
from tkinter import *
from tkinter import ttk
class Student:
def __init__(self,root):
self.root=root
self.root.title("student management system")
self.root.geometry("1350x700")
title=Label(self.root,text="Student Management System",bd=10,relief=GROOVE,font=("time new roman",40,"bold"),bg="yellow",fg="red")
title.pack(side=TOP,fill=X)
Manage_Frame=Frame(self.root,bd=4,relief=RIDGE,bg="crimson")
Manage_Frame.place(x=20,y=70,width=450,height=560)
#========Massage Frame===============================
Manage_Frame=Frame(self.root,bd=4,relief=RIDGE,bg="crimson")
Manage_Frame.place(x=20,y=100,width=450,height=560)
m_title=Label(Manage_Frame,text="Manage Students",bg="crimson",fg="white",font=("time new roman",30,"bold"))
m_title.grid(row=0,columnspan=2,pady=10)
lbl_roll = Label(Manage_Frame, text="Roll No.", bg="crimson", fg="white",font=("time new roman", 20, "bold"))
lbl_roll.grid(row=1, column=0, pady=10,padx=20,sticky="w")
txt_roll = Entry(Manage_Frame,font=("time new roman", 15, "bold"),bd=5,relief=GROOVE)
txt_roll.grid(row=1, column=2, pady=10, padx=20, sticky="w")
lbl_name = Label(Manage_Frame, text="Name", bg="crimson", fg="white", font=("time new roman", 20, "bold"))
lbl_name.grid(row=1, column=0, pady=10, padx=20, sticky="w")
txt_name = Entry(Manage_Frame, font=("time new roman", 15, "bold"), bd=5, relief=GROOVE)
txt_name.grid(row=2, column=1, pady=10, padx=20, sticky="w")
lbl_Email = Label(Manage_Frame, text="Email", bg="crimson", fg="white", font=("time new roman", 20, "bold"))
lbl_Email.grid(row=1, column=0, pady=10, padx=20, sticky="w")
txt_Email = Entry(Manage_Frame, font=("time new roman", 15, "bold"), bd=5, relief=GROOVE)
txt_Email.grid(row=3, column=0, pady=10, padx=20, sticky="w")
lbl_Gender = Label(Manage_Frame, text="Gender", bg="crimson", fg="white", font=("time new roman", 20, "bold"))
lbl_Gender.grid(row=4, column=0, pady=10, padx=20, sticky="w")
combo_Gender=ttk.Combobox(Manage_Frame,font=("times new roman",20,"bold"))
combo_Gender['values']=("Male","Female","other")
combo_Gender.grid(row=4,column=1,padx=20,pady=10)
lbl_Contact = Label(Manage_Frame, text="Contact", bg="crimson", fg="white", font=("time new roman", 20, "bold"))
lbl_Contact.grid(row=5, column=0, pady=10, padx=20, sticky="w")
txt_Contact = Entry(Manage_Frame, font=("time new roman", 15, "bold"), bd=5, relief=GROOVE)
txt_Contact.grid(row=5, column=1, pady=10, padx=20, sticky="w")
lbl_DOB = Label(Manage_Frame, text="DOB", bg="crimson", fg="white",font=("time new roman", 20, "bold"))
lbl_DOB.grid(row=6, column=0, pady=10, padx=20, sticky="w")
txt_Contact = Entry(Manage_Frame, font=("time new roman", 15, "bold"), bd=5, relief=GROOVE)
txt_Contact.grid(row=6, column=1, pady=10, padx=20, sticky="w")
lbl_address = Label(Manage_Frame, text="Address", bg="crimson", fg="white", font=("time new roman", 20, "bold"))
lbl_address.grid(row=6, column=0, pady=10, padx=20, sticky="w")
txt_address = Entry(Manage_Frame, font=("time new roman", 15, "bold"), bd=5, relief=GROOVE)
txt_address.grid(row=6, column=1, pady=10, padx=20, sticky="w")
#=========Button Frame=========
btn_Frame=Frame(Manage_Frame,bd=4,relief=RIDGE,bg="crimson")
btn_Frame.place(x=15, y=500, width=420)
Addbtn = Button(btn_Frame,text="add",width=10).grid(row=0,column=0,padx=10,pady=10)
Updatebtn = Button(btn_Frame, text="update", width=10).grid(row=0, column=1, padx=10, pady=10)
Deletebtn = Button(btn_Frame, text="delete", width=10).grid(row=0, column=2, padx=10, pady=10)
Clearbtn = Button(btn_Frame, text="clear", width=10).grid(row=0, column=3, padx=10, pady=10)
#=========Detail Frame=========
Detail_Frame = Frame(self.root, bd=4, relief=RIDGE, bg="crimson")
Detail_Frame.place(x=500, y=100, width=800, height=580)
lbl_search = Label(Detail_Frame, text="Search By", bg="crimson", fg="white", font=("time new roman", 20, "bold"))
lbl_search.grid(row=0, column=0, pady=10, padx=20, sticky="w")
combo_search = ttk.Combobox(Manage_Frame,width=10,font=("times new roman", 13, "bold"),state="readonly")
combo_search['values'] = ("Roll", "Name", "contact")
combo_search.grid(row=0, column=1, padx=20, pady=10)
txt_Search = Entry(Manage_Frame,width=15, font=("time new roman", 15, "bold"), bd=5, relief=GROOVE)
txt_Search.grid(row=6, column=1, pady=10, padx=20, sticky="w")
searchbtn = Button(btn_Frame, text="Search", width=10).grid(row=0, column=3, padx=10, pady=10)
showallbtn = Button(btn_Frame, text="Show All", width=10).grid(row=0, column=4, padx=10, pady=10)
#=========Table Frame=========
Table_Frame = Frame(Detail_Frame, bd=4, relief=RIDGE, bg="crimson")
Table_Frame.place(x=10, y=70, width=760, height=500)
scroll_x=Scrollbar(Table_Frame,orient=HORIZONTAL)
scroll_y = Scrollbar(Table_Frame, orient=VERTICAL)
Student_table=ttk.Treeview(Table_Frame,columns=("roll","name","email","gender","contact","dob","Address"),xscrollcommand=scroll_x.set,yscrollcommand=scroll_y.set)
scroll_x.pack(side=BOTTOM,fill=X)
scroll_y.pack(side=RIGHT, fill=Y)
scroll_x.config(command=Student_table.xview)
scroll_y.config(command=Student_table.xview)
Student_table.heading("roll",text="Roll")
Student_table.heading("name", text="Name")
Student_table.heading("email", text="Email")
Student_table.heading("gender", text="Gender")
Student_table.heading("contact", text="Contact")
Student_table.heading("dob", text="D.O.B")
Student_table.heading("Address", text="Address")
Student_table['show']='headings'
Student_table.pack()
root=Tk()
app=Student(root)
root.mainloop()
推荐阅读
- angular - Angular 项目找不到从 github fork 安装的模块
- javascript - NeDB 不使用 Express.JS 保存到文件中
- python - 如何将 **kwargs 与管道运算符合并?
- angular - Angular Reactive Form Disabled Control 无效
- c++ - 如何使用着色器避免在 OpenGL 中消失的线条?
- python - 顺时针排列多维点
- algorithm - 将相同的队列项分配给多个工作人员
- perl - perl 根据多列排序(列的顺序很重要)
- haskell - 如何在 GitLab 的持续集成中添加 Stack 和 GHC?
- reactjs - 无法解析“@progress/kendo-react-treeview”