如何解决Python Tkinter:当 TopLevel 运行时,Window1 布局会发生变化
我正在为我们的牙科业务创建一个简单的软件。我试图从另一个窗口查看所有患者,但每次单击 View Patient
按钮时,Window1
的布局都会发生变化。这可能是什么问题。
这是我的完整代码:
from tkinter import ttk
from tkinter import messageBox
from tkcalendar import DateEntry
class Window1:
def __init__(self,master):
self.master1 = master
self.master1.geometry('1190x750+0+0')
self.master1.config(bg='powder blue')
self.master1.title('Wonder Smile Management System')
self.topframe = Frame(self.master1,width=1060,height=70,bg='DeepSkyBlue4',relief=RIDGE,pady=5,bd=3)
self.topframe.grid(row=0,columnspan=2,pady=(0,10),ipadx=23)
self.infoframe = Frame(self.master1,width=420,height=610,bd=3)
self.infoframe.grid(row=1,column=0,rowspan=2,sticky=NW,padx=(5,0),ipadx=3,ipady=4)
self.rightframe = Frame(self.master1,width=367,height=680,bd=3)
self.rightframe.grid(row=1,column=1,padx=(4,5))
self.bottominfoframe = Frame(self.master1,height=200,bd=3)
self.bottominfoframe.grid(row=2,pady=(15,ipadx=115)
self.bottomrightframe = Frame(self.master1,height=40,pady=10,bd=3)
self.bottomrightframe.grid(row=2,padx=(8,5),ipady=4,ipadx=21)
self.bottomframe =Frame(self.master1,bd=4)
self.bottomframe.grid(row=3,rowspan=4,padx=(7,ipadx=5,ipady=10)
self.entryframe = Frame(self.master1,width=100,height=80,bd=3)
self.entryframe.grid(row=3,sticky=NE,padx=(452,12),pady=(5,ipadx=16)
self.lowestframe = Frame(self.master1,bd=3)
self.lowestframe.grid(row=4,column= 1,padx=(10,ipadx=7,ipady=3)
self.Fullname = StringVar()
self.Address = StringVar()
self.Birthday = StringVar()
self.MobileNumber = StringVar()
#===== TOP FRAME ======
self.titlename = Label(self.topframe,font=('arial',16,'bold'),fg='orange',text='WONDER SMILE',padx=485,pady=5)
self.titlename.grid(row=0,column=0)
#===== INFO FRAME =====
self.rgstrlbl = Label(self.infoframe,text='REGISTRATION')
self.rgstrlbl.grid(row=0,pady=5)
self.lblname = Label(self.infoframe,text='Name:',padx=2)
self.lblname.grid(row=1,sticky=W)
self.entryname = Entry(self.infoframe,textvariable=self.Fullname,bd=3,insertwidth=5,bg='white',justify='left')
self.entryname.grid(row=1,column=1)
self.lblage = Label(self.infoframe,text='Age:',padx=2)
self.lblage.grid(row=2,sticky=W)
self.entryage = SpinBox(self.infoframe,width=18,justify='left',from_=1,to=100)
self.entryage.grid(row=2,column=1)
self.lbladdress = Label(self.infoframe,text='Address:',padx=2)
self.lbladdress.grid(row=3,sticky=W)
self.entryaddress= Entry(self.infoframe,textvariable=self.Address,justify='left')
self.entryaddress.grid(row=3,column=1)
self.lblbday = Label(self.infoframe,text='Birthday:',padx=2)
self.lblbday.grid(row=4,sticky=W)
self.entrybday= DateEntry(self.infoframe,width=19,state='readonly')
self.entrybday.grid(row=4,column=1)
self.lblmobnum = Label(self.infoframe,text='Mobile Number:',padx=2)
self.lblmobnum.grid(row=5,sticky=W)
self.entrymobnum= Entry(self.infoframe,textvariable=self.MobileNumber,justify='left')
self.entrymobnum.grid(row=5,column=1)
self.btnsubmit = Button(self.infoframe,11,bg='dark green',text='Submit',padx=3,width=12,cursor='hand2')
self.btnsubmit.grid(row=6,ipadx=64,pady=5)
self.pviewbtn = Button(self.infoframe,bg='orange',fg='DeepSkyBlue4',text='View Patient',width=20,cursor='hand2',command=self.view_patient)
self.pviewbtn.grid(row=7,ipadx=28,0))
# ====== BottOM RIGHT FRAME ========
self.selectedcomboBox = StringVar(value='Choose Patient:')
self.cmb = ttk.ComboBox(self.bottomrightframe,'normal'),textvariable=self.selectedcomboBox,width=15,state='readonly')
self.cmb['values'] = ('Joseph','Carl','John')
self.cmb.grid(row=0,padx=(25,0))
self.selectedreport = StringVar(value='Choose Report:')
self.comboreport= ttk.ComboBox(self.bottomrightframe,textvariable=self.selectedreport,width=35,state='readonly')
self.comboreport.grid(row=0,20))
# =====Button=======
self.btnedit = Button(self.bottomrightframe,text='Edit',cursor='hand2')
self.btnedit.grid(row=1,0))
self.btnadd = Button(self.bottomrightframe,text='Add',cursor='hand2')
self.btnadd.grid(row=1,column=2,padx=(45,25))
self.btndelete = Button(self.bottomrightframe,bg='firebrick4',text='Delete',cursor='hand2')
self.btndelete.grid(row=1,sticky=W,0))
# ===== BottOM INFO FRAME ======
self.adminlbl = Label(self.bottominfoframe,text='ADMINISTRATOR')
self.adminlbl.pack(padx=5)
self.incomelbl = Label(self.bottominfoframe,14,fg='black',text='Income:')
self.incomelbl.pack(padx=5)
self.incomeamntlbl = Label(self.bottominfoframe,12,text='20513.38')
self.incomeamntlbl.pack(padx=5)
self.expenselbl = Label(self.bottominfoframe,text='Expenses:')
self.expenselbl.pack(padx=5)
self.expenseamntlbl = Label(self.bottominfoframe,text='1325.83')
self.expenseamntlbl.pack(padx=5)
self.logoutbtn = Button(self.bottominfoframe,text='logout',cursor='hand2')
self.logoutbtn.pack()
# ======= List ========
self.report = [('John','20','09124631644','Adjusting braces')]
self.patientlist = [('John',20,'Dasma','12/25/00','09512451255')]
# ====== RIGHT FRAME =======
# ====== Scrollbar =========
self.t_scroll = Scrollbar(self.rightframe)
self.t_scroll.pack(side=RIGHT,fill=Y)
# ======= Treeview table ========
self.t_table = ttk.Treeview(self.rightframe,yscrollcommand=self.t_scroll.set)
self.tree_view_style = ttk.Style()
self.tree_view_style.theme_use('default')
self.tree_view_style.configure("Treeview",background='DeepSkyBlue4',foreground='orange',fieldbackground='DeepSkyBlue4')
self.tree_view_style.map("Treeview",background=[('selected','orange')],foreground=[('selected','black')])
self.tree_view_style.configure("Treeview",highlightthickness=0,bd=0,font=('Arial',10))
self.t_scroll.config(command=self.t_table.yview)
self.t_table['column'] = ('Name','Age','Mobile Number','Report')
self.t_table.column('#0',width=0,stretch=NO)
self.t_table.column('Name',minwidth=30)
self.t_table.column('Age',minwidth=30)
self.t_table.column('Mobile Number',minwidth=30)
self.t_table.column('Report',width=120,minwidth=30)
headings = ['#0','Name','Report']
txt_headings = ['','Report']
for i in range(len(headings)):
self.t_table.heading(headings[i],text=f'{txt_headings[i]}',anchor=W)
for x in self.report:
self.t_table.insert(parent='',index='end',values=x)
self.t_table.pack(ipadx=72,ipady=30)
# ====== LOWER FRAME =======
self.btneditmat = Button(self.lowestframe,cursor='hand2')
self.btneditmat.grid(row=0,sticky=E,padx=(12,pady=(10,0))
self.btndeletemat = Button(self.lowestframe,cursor='hand2')
self.btndeletemat.grid(row=0,0))
# ====== ENTRY FRAME =======
self.selectedmat = StringVar(value="Choose material:")
self.matlbl = Label(self.entryframe,text='Material',padx=2)
self.matlbl.grid(row=0,0))
self.entrymat = ttk.ComboBox(self.entryframe,textvariable=self.selectedmat,state='readonly')
self.entrymat['values'] = ["Bracket","Toothbrush","Toothpaste"]
self.entrymat.grid(row=1,padx=(3,pady=5)
self.selectedqty = StringVar()
self.qtylbl = Label(self.entryframe,text='Price',padx=2)
self.qtylbl.grid(row=2,0))
self.entryqty = Entry(self.entryframe,textvariable=self.selectedqty,justify='left')
self.entryqty.grid(row=3,pady=5)
self.btnaddmaterial = Button(self.entryframe,cursor='hand2')
self.btnaddmaterial.grid(row=4,0))
self.materiallist = [('Brackets','2500.00')]
# ===== BottOM FRAME =======
# ====== Scrollbar =========
self.t_scroll1 = Scrollbar(self.bottomframe)
self.t_scroll1.pack(side=RIGHT,fill=Y)
# ======= Treeview table / BottomFrame ========
self.t_table1 = ttk.Treeview(self.bottomframe,yscrollcommand=self.t_scroll1.set)
self.tree_view_style1 = ttk.Style()
self.tree_view_style1.theme_use('default')
self.tree_view_style1.configure("Treeview",foreground='black',fieldbackground='DeepSkyBlue4')
self.tree_view_style1.map("Treeview",'black')])
self.tree_view_style1.configure("Treeview",10))
self.t_scroll1.config(command=self.t_table1.yview)
self.t_table1['column'] = ('Materials','Price')
self.t_table1.column('#0',stretch=NO)
self.t_table1.column('Materials',width=80,minwidth=30)
self.t_table1.column('Price',minwidth=30)
headings1 = ['#0','Materials','Price']
txt_headings1 = ['','Price']
for i in range(len(headings1)):
self.t_table1.heading(headings1[i],text=f'{txt_headings1[i]}',anchor=W)
for x in self.materiallist:
self.t_table1.insert(parent='',values=x)
self.t_table1.pack(ipadx=56)
def view_patient(self):
self.open_window3 = Toplevel(self.master1)
self.app = Window2(self.open_window3)
class Window2:
def __init__(self,master):
self.master3 = master
width = 550
height = 322
screen_width = master.winfo_screenwidth()
screen_height = master.winfo_screenheight()
x_coordinate = (screen_width / 2) - (width / 2)
y_coordinate = (screen_height / 2) - (height / 2)
self.master3.geometry("%dx%d+%d+%d" % (width,height,x_coordinate,y_coordinate))
self.master3.config(bg='powder blue')
self.master3.title('Wonder Smile Management System')
self.topframe3 = Frame(self.master3,width=400,height=50,bd=3)
self.topframe3.grid(row=0)
self.rightframe3 = Frame(self.master3,bd=3)
self.rightframe3.grid(row=1)
self.titlename3 = Label(self.topframe3,text='Patient List')
self.titlename3.pack(padx=212)
self.patientlist = [('Arsher','09512451255')]
# ====== Scrollbar =========
self.t_scroll3 = Scrollbar(self.rightframe3)
self.t_scroll3.pack(side=RIGHT,fill=Y)
# ======= Treeview table ========
self.t_table3 = ttk.Treeview(self.rightframe3,yscrollcommand=self.t_scroll3.set)
self.tree_view_style3 = ttk.Style()
self.tree_view_style3.theme_use('default')
self.tree_view_style3.configure("Treeview",fieldbackground='DeepSkyBlue4')
self.tree_view_style3.map("Treeview",'black')])
self.tree_view_style3.configure("Treeview",10))
self.t_scroll3.config(command=self.t_table3.yview)
self.t_table3['column'] = ('Name','Address','Birthday','Mobile Number')
self.t_table3.column('#0',stretch=NO)
self.t_table3.column('Name',width=75,minwidth=30)
self.t_table3.column('Age',width=30)
self.t_table3.column('Address',minwidth=30)
self.t_table3.column('Birthday',width=50,minwidth=30)
self.t_table3.column('Mobile Number','Mobile Number']
txt_headings = ['','Mobile Number']
for i in range(len(headings)):
self.t_table3.heading(headings[i],anchor=W)
for x in self.patientlist:
self.t_table3.insert(parent='',values=x)
self.t_table3.pack(ipadx=122,ipady=30,)
def main():
root = Tk()
app = Window1(root)
root.mainloop()
if __name__ == '__main__':
main()```
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。