# 引入tk import tkinter as tk class UserLogin(object): """ 初始化窗口 """ def __init__(self, master=None): self.root = master self.root.geometry("250x220+125+110") # 窗体大小,注意:之间的间隔是“x”而不是“*”,后面的+是用来做居中显示 self.username = StringVar() # 用户名字段 self.password = StringVar() # 密码字段 self.create_page() # 调用函数 def create_page(self): self.page = Frame(self.root) # 创建一个新页面 self.page.pack() # 显示 root = tk.Tk() # 获取窗口大小 # print(root.winfo_screenwidth(), root.winfo_screenheight()) # 电脑屏幕大小 # print(root.winfo_reqwidth(), root.winfo_reqheight()) # 创建改程序的窗口大小 root.title('这是定义的显示在左上角的名称') # 程序名称 UserLogin(root) root.mainloop() # 进入循环队列
tk.Tk()是调用tkinter模块来创建窗口
在实现页面之后,可以使用Button、Entry、Label等组件来实现功能
Button | 按钮,和HTML功能相似 | Button(第一个参数为创建的页面; 参数为text,显示的提示信息; 参数command,实现点击事件) |
Label | 标签,显示提示信息 | Label(第一个参数为创建的页面, 参数为text,显示的提示信息) |
Entry | 输入框,相当于HTML里面的input | Entry(第一个参数为创建的页面, 参数为textvariable,关联的字段; 参数show用来显示使用信息是否保密) |
具体使用案例:
Button(self.page, text='群组', width=9, font=("Arial, 12"), command=self.friend_groups).grid(row=1, column=2, sticky='W')
Label(self.page, text=self.username).grid(row=0, column=1, sticky='W')
Entry(self.page, textvariable=self.username).grid(row=2, column=1, columnspan=2, sticky='E')
关于grid:
def create_page(self): self.page = Frame(self.root) # 创建一个新页面 self.page.pack() # 表单的实现 """ grid(row, cloumn, cloumnspan, rowspan, sticky) row:表示从第几行开始 coumn:表示从第几列开始显示 cloumnspan:表示往后合并几列 rowspan:表示往后合并几行 sticky:表示对齐方式,N/S/E/W 分别表示:上/下/右/左 """ self.page.title_label = Label(self.page, text='用户登录').grid(row=0, column=1, sticky='N,S,E,W') # 创建一个标题 self.page.white_label1 = Label(self.page, text=" ").grid(row=1, sticky='N') self.page.username_label = Label(self.page, text="帐号:").grid(row=2, sticky='W') self.page.username_input = Entry(self.page, textvariable=self.username).grid(row=2, column=1, columnspan=2, sticky='E') # 创建一个输入框 self.page.white_label2 = Label(self.page, text=" ").grid(row=3, sticky='N') self.page.password_label = Label(self.page, text="密码:").grid(row=4, sticky='W') self.page.password_input = Entry(self.page, textvariable=self.password, show='*').grid(row=4, column=1, columnspan=2, sticky='E') self.page.white_label3 = Label(self.page, text=" ").grid(row=5, sticky='N') self.page.button_login = Button(self.page, text='登录', command=self.login).grid(row=6, column=1, sticky='W') self.page.button_register = Button(self.page, text='注册', command=self.register).grid(row=6, column=2, sticky='W')
关于滚动条的使用:
def showInfoMesssage(self): if self.page1: self.page1.destroy() # 如果有缓存,那么就删除缓存界面 self.page1 = Frame(self.oldroot) scrolly = Scrollbar(self.page1) scrolly.pack(side=RIGHT, fill=Y) ListViews = Listbox(self.page1, yscrollcommand=scrolly.set, width=60, height=20) showMessageLists = [] # 用来当要显示的消息容器 InfoMessages = self.networkMesssage(self.fids) # 获取发送信息 InfoMessages_recv = self.networkMesssage(self.ownerids) # 获取接收信息 dealed_infos = self.dealLists([InfoMessages, InfoMessages_recv]) # 处理信息 if dealed_infos: for dealed_info in dealed_infos: ListViews.insert(END, dealed_info) else: ListViews.insert(END, InfoMessages['error']) ListViews.pack() scrolly.config(command=ListViews.yview) self.page1.pack()