from tkinter import Button, Entry, Frame, Label, Tk
class UiLogin:
def setup_ui(self, parent: Tk) -> None:
"""设置界面,包括两部分,上面的输入部分和下面的控制部分。"""
self._build_input_field(parent)
self._build_control_pad(parent)
self._config_window(parent) # 设置界面大小和标题
def _build_input_field(self, parent: Tk) -> None:
"""设置上面的输入部分,包括了两个标签和两个输入框,输入框分别命名为
name_field和pwd_field。
"""
frame = Frame(parent) # 上面部分的容器,用于存储标签和输入框控件
frame.grid(row=0, column=0, sticky="nesw")
Label(frame, text="姓名:").grid(row=0, column=0, padx=5)
Label(frame, text="密码:").grid(row=1, column=0, padx=5)
self.name_field = Entry(frame) # 用户名输入框
self.name_field.grid(row=0, column=1, pady=10)
self.pwd_field = Entry(frame) # 密码输入框
self.pwd_field.grid(row=1, column=1, padx=10)
def _build_control_pad(self, parent: Tk) -> None:
"""设置下面的控制部分,包括两个按钮,分别命名为btn_login和btn_quit。"""
frame = Frame(parent) # 下面部分的容器,用于存储两个按钮
frame.grid(row=1, column=0)
self.btn_login = Button(frame, text="登录")
self.btn_login.pack(side="left", padx=10)
self.btn_quit = Button(frame, text="退出")
self.btn_quit.pack(side="left", padx=10, pady=10)
@staticmethod
def _config_window(parent: Tk) -> None:
"""设置主窗口的标题和是否允许缩放。"""
parent.title("登录") # 修改标题
parent.resizable(False, False) # 禁止缩放
def main():
root = Tk() # 创建主窗口
ui = UiLogin() # 实例化UI对象
ui.setup_ui(root) # 把各个部分的组件添加到主界面上然后设置主界面的属性(大小、标题)
root.mainloop() # 启动事件循环,展示主界面
if __name__ == "__main__":
main()
|