When Hb_Test
导入后,其代码将被执行,因此模块中的最后三行将创建一个窗口:
Hb_测试.py
...
# below lines will create a window
root = Tk()
obj = Hba(root)
root.mainloop()
请注意,不建议创建多个实例Tk()
并执行.mainloop()
不止一次。
对于除以下以外的窗口主/根窗口, 使用Toplevel
代替Tk
。对于你的情况,我建议Hba
继承自Toplevel
:
import tkinter as tk
class Hba(tk.Toplevel):
def __init__(self, master=None, **kwargs):
super().__init__(master, **kwargs)
self.geometry("300x70+200+200")
self.title("JIBAN PRABHA PATHOLAB")
bg_color = "#074463"
Hb = tk.LabelFrame(self, text="BLOOD TEST", font=("ALGERIAN",15,"bold"), fg="gold", bg=bg_color)
Hb.place(x=0, y=0)
self.hb_neu_lbl = tk.Label(Hb, text="Hb%(sahils) Test", bg=bg_color, fg="white", font=("Bell MT",15,"bold"))
self.hb_neu_lbl.grid(row=1,column=1,padx=5,pady=5)
self.hb_neu = tk.Entry(Hb, width=10, font="BellMT 15", bd=5, relief=tk.SUNKEN)
self.hb_neu.grid(row=1,column=2,padx=5,pady=5)
注意我已经改变了from tkinter import *
to import tkinter as tk
因为也不建议导入通配符。
也不要编写如下代码:
self.hb_neu_lbl = Label(Hb,text="Hb%(sahils) Test",bg=bg_color,fg="white",font=("Bell MT",15,"bold")).grid(row=1,column=1,padx=5,pady=5)
because self.hb_neu_lbl
将None
(的结果.grid(...)
)。代码如下:
self.hb_neu_lbl = Label(Hb, text="Hb%(sahils) Test", bg=bg_color, fg="white", font=("Bell MT",15,"bold"))
self.hb_neu_lbl.grid(row=1,column=1,padx=5,pady=5)