自从成功上手 Python 后,就一发不可收拾,每天疯狂的练习,想做啥就去尝试,各种练习,其中遇到太多的坑,这些坑对于初学者而言需要花费巨额的时间去查阅和理解;
Python 学习感想
Python 作为我第一个掌握的 支持界面编程 的语言,我非常热爱它,它就像人们所说的那样,简单快捷方便 Python 的图形界面是真的非常糟糕的,虽然有很多大佬开发了一些 图形界面设计工具,但还是感觉糟糕,稳定性感觉不行,容易崩溃,还有就是控件太少; 比如 我昨天折腾的一个 小说追更工具,就差最后一步,显示文章内容了,结果突然发现,tkinter 居然没有内置的网页调用控件,虽然网上有些资料显示可以用其他第三方库实现,但是都是非常麻烦复杂的一个事情,另外也可以正则匹配 div 内容 然后慢慢调试好显示方式在输出到编辑器上面,但是这会是一个时间话,我最后选择了放弃,暂时不去折腾它 很多人都说 Python 的优点就是其 脚本方面 ,简单快捷,所以官方不会考虑也不需要考虑增加图形界面的发展潜力 对于我而言,我觉得能独立开发一款窗口程序是一件非常兴奋自豪的事情,所以即使如此,我也喜欢并且尝试用 Python 去编写窗口程序 目前依然能做到使用 Python 编写一些平时需要的功能脚本,奈何七秒记忆的我对于库的不熟悉,所以总是需要花费很多的时间... 最后,希望在未来的某天,完全掌握 Python 后,在去尝试接触 c++ 之类的 图形编程语言,那时 PHP + PYTHON 的功底或许能让我快速入门?登陆界面代码
扯犊子了半天,进入正题,下面附上我写的 登陆界面以及登陆后显示新界面列子代码:import tkinter as tk
import webbrowser
import configparser
import os
from tkinter import ttk
from tkinter import messagebox
class homes:
def __init__(self, 启动窗口):
self.启动窗口 = 启动窗口
self.启动窗口.title('')
self.启动窗口.resizable(width=False, height=False)
screenwidth = self.启动窗口.winfo_screenwidth()
screenheight = self.启动窗口.winfo_screenheight()
size = '%dx%d+%d+%d' % (1185, 698, (screenwidth - 1185) / 2, (screenheight - 698) / 2)
self.启动窗口.geometry(size)
self.标签1_标题 = tk.StringVar()
self.标签1_标题.set('这是登陆后的界面,可以在这里添加登陆后的样式和功能')
self.标签1 = tk.Label(self.启动窗口,textvariable=self.标签1_标题,anchor=tk.W)
self.标签1.place(x=390,y=179,width=396,height=174)
class PyWinDesign:
#全局变量
global cf
cf = configparser.ConfigParser()
def __init__(self, 启动窗口):
self.启动窗口 = 启动窗口
self.启动窗口.title('登陆')
self.启动窗口.resizable(width=False, height=False)
screenwidth = self.启动窗口.winfo_screenwidth()
screenheight = self.启动窗口.winfo_screenheight()
size = '%dx%d+%d+%d' % (348, 355, (screenwidth - 348) / 2, (screenheight - 355) / 2)
self.启动窗口.geometry(size)
self.photo = tk.PhotoImage(file=r'D:\Desktop\Python\logo.png')
self.图片1 = ttk.Label(self.启动窗口,imag=self.photo,anchor=tk.CENTER)
self.图片1.place(x=50,y=34,width=247,height=50)
self.账号标签_标题 = tk.StringVar()
self.账号标签_标题.set('账号:')
self.账号标签 = ttk.Label(self.启动窗口,textvariable=self.账号标签_标题,anchor=tk.W)
self.账号标签.place(x=56,y=147,width=37,height=24)
self.账号编辑框_内容 = tk.StringVar()
self.账号编辑框_内容.set('')
self.账号编辑框 = ttk.Entry(self.启动窗口,textvariable=self.账号编辑框_内容,justify=tk.LEFT)
self.账号编辑框.place(x=98,y=147,width=179,height=24)
self.密码标签_标题 = tk.StringVar()
self.密码标签_标题.set('密码:')
self.密码标签 = ttk.Label(self.启动窗口,textvariable=self.密码标签_标题,anchor=tk.W)
self.密码标签.place(x=56,y=198,width=37,height=24)
self.密码编辑框_内容 = tk.StringVar()
self.密码编辑框_内容.set('')
self.密码编辑框 = ttk.Entry(self.启动窗口,textvariable=self.密码编辑框_内容,show='*',justify=tk.LEFT)
self.密码编辑框.place(x=98,y=198,width=179,height=24)
self.账号读取 = self.账号读取()
self.登陆_标题 = tk.StringVar()
self.登陆_标题.set('登陆')
self.登陆 = ttk.Button(self.启动窗口,textvariable=self.登陆_标题)
self.登陆.bind('<Button-1>',self.登陆_被鼠标左键按下)
self.登陆.place(x=199,y=292,width=80,height=32)
self.注册_标题 = tk.StringVar()
self.注册_标题.set('注册')
self.注册 = ttk.Button(self.启动窗口,textvariable=self.注册_标题)
self.注册.bind('<Button-1>',self.注册_被鼠标左键按下)
self.注册.place(x=90,y=292,width=80,height=32)
self.记住账密_选中 = tk.IntVar()
self.记住账密_选中.set(1)
self.记住账密_标题 = tk.StringVar()
self.记住账密_标题.set('记住账密')
self.记住账密 = ttk.Checkbutton(self.启动窗口,textvariable=self.记住账密_标题,variable=self.记住账密_选中,onvalue=1,offvalue=0)
self.记住账密.place(x=97,y=241,width=88,height=24)
def 账号存储(self):
账号 = self.账号编辑框_内容.get()
密码 = self.密码编辑框_内容.get()
config = os.path.exists('config.ini')
if config != 1:
cf.add_section("User")
cf.set("User", "username",账号)
cf.set("User", "password",密码)
with open("config.ini","w+") as f:
cf.write(f)
def 账号读取(self):
config = os.path.exists('config.ini')
if config == 1:
cf.read("config.ini")
读账号 = cf.get("User", "username")
读密码 = cf.get("User", "password")
self.账号编辑框_内容.set(读账号)
self.密码编辑框_内容.set(读密码)
def 销毁(self):
for x in root.winfo_children():
x.destroy()
root.update()
def 登陆_被鼠标左键按下(self,event):
记住账密 = self.记住账密_选中.get()
账号 = self.账号编辑框_内容.get()
密码 = self.密码编辑框_内容.get()
if 记住账密 == 1:
账号存储 = self.账号存储()
if 账号 == 'admin' and 密码 == 'pass':
messagebox.showinfo("提示","登陆成功")
# 销毁登录框控件,一开始想直接销毁所有控件,然后更改界面大小,在添加新的控件,但是暂时遇到难题,不知道如何添加,destroy删除了所有 tk控件
#self.销毁()
root.withdraw() # 隐藏登陆框
home.deiconify() # 显示登陆后的界面
else:
messagebox.showinfo("提示","登陆失败")
def 注册_被鼠标左键按下(self,event):
webbrowser.open(url = 'https://www.mrwu.red/wp-login.php?action=register', new = 0)
if __name__ == '__main__':
home = tk.Tk()
root = tk.Toplevel()
home.withdraw() #启动后先隐藏大界面
app = PyWinDesign(root)
apps = homes(home)
home.mainloop()