微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python Tkinter:当 TopLevel 运行时,Window1 布局会发生变化

如何解决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 举报,一经查实,本站将立刻删除。