分离edit_profile,降低耦合
This commit is contained in:
174
main.py
174
main.py
@ -161,6 +161,36 @@ class app(MDApp):
|
||||
self.theme_cls.font_styles["Caption"] = ["BPoppins", 13, False, 0.15]
|
||||
self.theme_cls.font_styles["Overline"] = ["BPoppins", 10, True, 1.5]
|
||||
|
||||
def on_text_field_focus(self, instance, value):
|
||||
if value:
|
||||
# 当MDTextField获得焦点时
|
||||
# 获取ScrollView和MDList的引用
|
||||
scroll_view = self.root.get_screen('modify_current_param').ids.real_time_scroll_view
|
||||
md_list = self.root.get_screen('modify_current_param').ids.real_time_md_list
|
||||
|
||||
# 计算MDTextField在MDList中的相对位置
|
||||
# instance.y 是MDTextField在父控件(BoxLayout)中的y坐标
|
||||
# instance.parent.y 是BoxLayout在MDList中的y坐标
|
||||
# 所以MDTextField在MDList中的y坐标是 instance.y + instance.parent.y
|
||||
text_field_y_in_mdlist = instance.y + instance.parent.y
|
||||
|
||||
# 计算需要滚动的目标位置
|
||||
# 目标是让MDTextField的底部与ScrollView的底部对齐,或者至少在可见区域内
|
||||
# scroll_view.height 是ScrollView的可见高度
|
||||
# md_list.height 是MDList的总高度
|
||||
# scroll_view.scroll_y 的范围是0到1,0表示底部,1表示顶部
|
||||
|
||||
# 计算MDTextField相对于MDList顶部的距离
|
||||
relative_y = md_list.height - text_field_y_in_mdlist - instance.height
|
||||
|
||||
# 将相对距离转换为scroll_y的值
|
||||
# 确保不会滚动到超出范围
|
||||
if md_list.height > scroll_view.height:
|
||||
target_scroll_y = relative_y / (md_list.height - scroll_view.height)
|
||||
# 限制target_scroll_y在0到1之间
|
||||
target_scroll_y = max(0, min(1, target_scroll_y))
|
||||
scroll_view.scroll_y = target_scroll_y
|
||||
|
||||
def build(self):
|
||||
Builder.load_file('kv/app.kv')
|
||||
screen_manager = ScreenManager()
|
||||
@ -704,143 +734,21 @@ class app(MDApp):
|
||||
|
||||
threading.Thread(target=_connect_in_background, daemon=True).start()
|
||||
|
||||
###############################################SIGNUP Page Functions#####################################################
|
||||
|
||||
# signup Verification function "check_signup"
|
||||
# def check_signup(self, name, prn, email, num, password, branch, sem, Wifi_SSID, modbus_ip, modbus_port):
|
||||
# if name == "" or prn == "" or email == "" or num == "" or password == "" or branch == "" or sem == "":
|
||||
# check = "Enter all required fields"
|
||||
# return self.dialog1(check)
|
||||
# else:
|
||||
# status = "None"
|
||||
# with open('data/Users.csv', "r") as file:
|
||||
# csv_reader = csv.reader(file, delimiter=',')
|
||||
# for line in csv_reader:
|
||||
# try:
|
||||
# if line[3] == num:
|
||||
# status = "num"
|
||||
# break
|
||||
# if line[1] == prn:
|
||||
# status = "prn"
|
||||
# break
|
||||
# if line[2] == email:
|
||||
# status = "email"
|
||||
# break
|
||||
# else:
|
||||
# status = False
|
||||
# except IndexError:
|
||||
# pass
|
||||
# if status == "num":
|
||||
# check = "Number already registered Please enter a new number"
|
||||
# return self.dialog1(check)
|
||||
# elif status == "prn":
|
||||
# check = "PRN already registered Please enter a PRN"
|
||||
# return self.dialog1(check)
|
||||
# elif status == "email":
|
||||
# check = "Email already registered Please enter a new email"
|
||||
# return self.dialog1(check)
|
||||
# else:
|
||||
# self.root.current = "otp"
|
||||
# self.send_otp(num)
|
||||
# # 保存注册信息时包含Modbus信息
|
||||
# self.signup_modbus_ip = modbus_ip
|
||||
# self.signup_modbus_port = modbus_port
|
||||
# check = "One Time Password has been shared on your registered Whatsapp No. Successful!."
|
||||
# self.dialog1(check)
|
||||
|
||||
##################################################FORGOT PassWord Page##################################################
|
||||
|
||||
# # FORGOT PASSWORD page mobile number verification function 'verify_no'
|
||||
# def verify_no(self):
|
||||
# status = False
|
||||
# if self.mobile_no.text == "":
|
||||
# check = "Please enter your Mobile Number."
|
||||
# return self.dialog1(check)
|
||||
# else:
|
||||
# with open('data/Users.csv', "r", encoding="utf-8") as file:
|
||||
# csv_reader = csv.reader(file, delimiter=",")
|
||||
# for line in csv_reader:
|
||||
# try:
|
||||
# if line[3] == self.mobile_no.text:
|
||||
# status = True
|
||||
# break
|
||||
# else:
|
||||
# status = False
|
||||
# except IndexError:
|
||||
# pass
|
||||
# except Exception as e:
|
||||
# print(e)
|
||||
|
||||
# if status:
|
||||
# check = "One Time Password has been shared on your registered Whatsapp No. Successful!."
|
||||
# self.root.current = "otp"
|
||||
# self.send_otp(self.mobile_no.text)
|
||||
# return self.dialog1(check)
|
||||
# else:
|
||||
# check = "Enter Registered Mobile Number."
|
||||
# self.dialog1(check)
|
||||
|
||||
# def reset_password(self):
|
||||
# if self.new_pass.text == "" or self.new_pass1.text == "":
|
||||
# check = "Please enter your new password"
|
||||
# return self.dialog1(check)
|
||||
|
||||
# elif not self.new_pass.text == self.new_pass1.text:
|
||||
# check = "Password Does Not Match. \nPlease Re-check your password."
|
||||
# return self.dialog1(check)
|
||||
|
||||
# else:
|
||||
# with open('data/Users.csv', "r", encoding="utf-8") as file:
|
||||
# csv_reader = csv.DictReader(file, delimiter=",")
|
||||
# rows = [row for row in csv_reader]
|
||||
|
||||
# for row in rows:
|
||||
# if row['Reserve'] == self.mobile_no.text:
|
||||
# row['User_pass'] = self.new_pass.text
|
||||
# break
|
||||
|
||||
# try:
|
||||
# with open('data/Users.csv', "w", newline='', encoding="utf-8") as file:
|
||||
# headers = ["User", "Reserve", "Student_Email", "Reserve", "User_pass",
|
||||
# "Branch", "Semester"]
|
||||
# csv_writer = csv.DictWriter(file, fieldnames=headers)
|
||||
# csv_writer.writeheader()
|
||||
# csv_writer.writerows(rows)
|
||||
# check = "Password Updated Successfully!"
|
||||
# self.root.current = "login"
|
||||
# except Exception as e:
|
||||
# print(e)
|
||||
# check = "Something went wrong please try again."
|
||||
# self.dialog1(check)
|
||||
|
||||
###############################################PROFILE & EDIT Profile Page##############################################
|
||||
|
||||
def edit_profile(self):
|
||||
if self.edit_name.text == "" or self.edit_prn.text == "" or self.edit_email.text == "" or self.edit_number.text == "":
|
||||
check = "Enter all required fields"
|
||||
return self.dialog1(check)
|
||||
else:
|
||||
with open('data/Users.csv', "r", encoding="utf-8") as file:
|
||||
csv_reader = csv.DictReader(file, delimiter=",")
|
||||
rows = [row for row in csv_reader]
|
||||
|
||||
for row in rows:
|
||||
if row['Wifi_SSID'] == self.profile_wifi_ssid.text:
|
||||
row['User'] = self.edit_name.text
|
||||
row['User_pass'] = self.edit_prn.text
|
||||
row['Wifi_SSID'] = self.edit_email.text
|
||||
row['Modbus_IP'] = self.edit_number.text
|
||||
row['Modbus_Port'] = self.password.text
|
||||
row['Reserve'] = self.edit_branch.text
|
||||
row['Reserve'] = self.edit_semester.text
|
||||
break
|
||||
|
||||
with open('data/Users.csv', newline="", mode="w", encoding="utf-8") as file:
|
||||
header = ["User", "User_pass", "Wifi_SSID", "Modbus_IP", "Modbus_Port",
|
||||
"Reserve", "Reserve"]
|
||||
csv_writer = csv.DictWriter(file, fieldnames=header)
|
||||
csv_writer.writeheader()
|
||||
csv_writer.writerows(rows)
|
||||
user_data = {
|
||||
'User': self.edit_name.text,
|
||||
'User_pass': self.edit_prn.text,
|
||||
'Wifi_SSID': self.edit_email.text,
|
||||
'Modbus_IP': self.edit_number.text,
|
||||
'Modbus_Port': self.password.text,
|
||||
'Reserve_branch': self.edit_branch.text,
|
||||
'Reserve_semester': self.edit_semester.text
|
||||
}
|
||||
update_user_profile(user_data, self.profile_wifi_ssid.text)
|
||||
self.verify(True)
|
||||
self.root.current = "home"
|
||||
|
||||
@ -850,6 +758,8 @@ class app(MDApp):
|
||||
self.profile_edit_screen.ids.edit_no.readonly = True
|
||||
self.profile_edit_screen.ids.edit_private_credential_butn.disabled = False
|
||||
|
||||
from user_data_manager import update_user_profile
|
||||
|
||||
if __name__ == '__main__':
|
||||
app().run()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user