Ahmed Ahmed64 نشر 23 يناير أرسل تقرير نشر 23 يناير الرجاء مراجعة وتصحيح الكود لو وجد خطأ أحتاج من الشفرة أن تقوم بالنسخ من أداة Treeview حيث حاولت بجميع الطرق التي أعرفها ولاكن لم ينجح أمر النسخ الأن سأرسل الشفرة الخاصة بالأداة وكود النسخ واللصق الرجاء المراجعة والتحقق من كتابة الكود class App(ctk.CTk,tk.Tk): def __init__(self): super().__init__() ctk.set_appearance_mode("light") ctk.set_default_color_theme("blue") self.geometry("600x500") self.title("Tk example") self.columnconfigure(0, weight = 1) self.rowconfigure(0, weight = 1) self.Frame1 = ctk.CTkFrame(self , border_width = 1,border_color= "#ff6c0b",fg_color = "#FFFFFF") self.Frame1.grid(row=0, column=0, pady=(5, 5),padx=(5, 5), sticky="ewsn") self.Frame1.columnconfigure(0, weight = 1) self.Frame1.rowconfigure(0, weight = 1) #Treeview self.tree = ttk.Treeview(self.Frame1) self.tree.grid(row=0, column=0, padx=(5, 5), pady=(5, 5),sticky='ewn') self.tree.bind('<Button-3>', self.popup_menu) # القائمة self.popup1 = tk.Menu(self.tree, tearoff=0) self.popup1.add_command( command=self.it_copy, label="Copy") self.popup1.add_command( command=self.it_paste, label="paste") # النسخ def it_copy(self): item = self.tree.selection()[0] self.clipboard_clear() self.clipboard_append(self.tree.item(item, option='text')) # اللصق def it_paste(self): self.text = root.clipboard_get() self.tree.insert("", "end", text=self.text) # إظهر القائمة def popup_menu(self,event): self.tree.identify_row(event.y) self.popup1.post(event.x_root, event.y_root) app = App() app.mainloop() أنا أقوم بفتح ملف excel وأقوم بتحويلة إلى pd.DataFrame ومن ثم أتعامل مع هذه DataFrame وأقوم بجلب عمود فقط وأقوم بعد ذلك بعرضة على أداة Treeview وهذا الجزء الخاص بهذه العملية def ruN_FILENAME(self): if hasattr(self, 'file_name') and self.file_name: self.df = pd.read_excel(self.file_name,sheet_name=self.sh_t,header=None) self.A = self.df.iloc[8::2, [0]] self.A1 = pd.DataFrame(self.A ) self.tree["column"]=list(self.A1.columns) self.tree["show"] = "headings" for column in self.tree["column"]: self.tree.heading(column , text=column) df_rows = self.A1.to_numpy().tolist() for row in df_rows: self.tree.insert("" , "end" , values = row) حيث أصل إلى مرحلة العرض على أداة Treeview و تظهر النتيجة عليها وعند محاولة نسخ سجل تظهر القائمة بدون مشاكل ولاكن عند الضغط لا يستجيب النسخ اقتباس
0 El Sayed El Tohamy نشر 23 يناير أرسل تقرير نشر 23 يناير بتاريخ 6 ساعة قال Ahmed Ahmed64: # اللصق def it_paste(self): self.text = root.clipboard_get() self.tree.insert("", "end", text=self.text) استبدل كلمة root بـ self بعد التعديل، قمت بتجربتها على الشجرة (ولكن العناصر أضفتها يدويًا ليس من إكسيل)، وتمت عملية النسخ واللصق بنجاح. هذه شيفرات إضافة العناصر يدويًا self.tree.insert("", "end", text="Item 1") self.tree.insert("", "end", text="Item 2") self.tree.insert("", "end", text="Item 3") اقتباس
0 Ahmed Ahmed64 نشر 24 يناير الكاتب أرسل تقرير نشر 24 يناير (معدل) بتاريخ 11 ساعة قال El Sayed El Tohamy: استبدل كلمة root بـ self بعد التعديل، قمت بتجربتها على الشجرة (ولكن العناصر أضفتها يدويًا ليس من إكسيل)، وتمت عملية النسخ واللصق بنجاح. هذه شيفرات إضافة العناصر يدويًا self.tree.insert("", "end", text="Item 1") self.tree.insert("", "end", text="Item 2") self.tree.insert("", "end", text="Item 3") نعم أخي كما ذكرت عند الإضافة يدويا وهذه كانت تجربتي الأولى للكود يعمل بدون مشاكل ولاكن عند إستخدام الأكسل لايعمل لايقوم لا بالنسخ و لا اللصق هل من حل حيث قمت بمعالجة بسيطة على هذا السطر self.tree.insert("" , "end" , values = row) قمت بتعديله هكذا self.tree.insert("" , "end" , text = row ,values = row) وعند تجربة النسخ واللصق في مكان أخر من الجهاز مثلا على المفكرة يظهر اللصق بهذه الطريق { السلام عليكم } أي يظهر ما بين هذه الأقواس هل من معالجة لهذا الكود ملاحظة عند إستحدام الكود بهذا الشكل self.tree.insert("" , "end" , text = row) يمكن النسخ واللصق بشكل طبيعي وأيضا بها مشكلة { } لاكن السجلات في أداة Treeview فعلا موجودة ويمكن تحديدها ولاكن القيمة غير ظاهرة للمستخدم أي لأيمكن رؤيتها بالعين تم التعديل في 24 يناير بواسطة Ahmed Ahmed64 اقتباس
0 El Sayed El Tohamy نشر 24 يناير أرسل تقرير نشر 24 يناير بتاريخ 3 ساعة قال Ahmed Ahmed64: يمكن النسخ واللصق بشكل طبيعي وأيضا بها مشكلة { } لاكن السجلات في أداة Treeview فعلا موجودة ويمكن تحديدها ولاكن القيمة غير ظاهرة للمستخدم أي لأيمكن رؤيتها بالعين هل يمكنك مشاركة الشيفرات كاملة من فضلك، بحيث أعمل عليها كما هي عندك بالضبط. كذلك إذا توجد أي ملفات مساعدة مثل الإكسيل يرجى إرسال الملف بحتوي على عينة من البيانات للتجربة عليه. 1 اقتباس
0 Ahmed Ahmed64 نشر 24 يناير الكاتب أرسل تقرير نشر 24 يناير بتاريخ 1 ساعة قال El Sayed El Tohamy: هل يمكنك مشاركة الشيفرات كاملة من فضلك، بحيث أعمل عليها كما هي عندك بالضبط. كذلك إذا توجد أي ملفات مساعدة مثل الإكسيل يرجى إرسال الملف بحتوي على عينة من البيانات للتجربة عليه. حسنا أخي إليك ملف الشفرة كاملة مع ملف اكسل للتجريب عليه test_dG.rar اقتباس
0 El Sayed El Tohamy نشر 24 يناير أرسل تقرير نشر 24 يناير بتاريخ 13 ساعة قال Ahmed Ahmed64: يظهر اللصق بهذه الطريق { السلام عليكم } المشكلة هنا هي مشكلة ترميز encode اللغة العربية، لذلك نستخدم مكتبة pyperclip في عملية النسخ واللصق كذلك إضافة معامل values عند إدراج insert العنصر للشجرة # النسخ def it_copy(self): item = self.tree.selection()[0] self.clipboard_clear() # self.clipboard_append(self.tree.item(item, option='text')) pyperclip.copy(self.tree.item(item, option='text')) # اللصق def it_paste(self): # self.text = self.clipboard_get() self.text = pyperclip.paste() # self.tree.insert("", "end", text=self.text) self.tree.insert("", "end", text=self.text, values=self.text) 1 اقتباس
0 Ahmed Ahmed64 نشر 24 يناير الكاتب أرسل تقرير نشر 24 يناير (معدل) بتاريخ 17 دقائق مضت قال El Sayed El Tohamy: # النسخ def it_copy(self): item = self.tree.selection()[0] self.clipboard_clear() # self.clipboard_append(self.tree.item(item, option='text')) pyperclip.copy(self.tree.item(item, option='text')) # اللصق def it_paste(self): # self.text = self.clipboard_get() self.text = pyperclip.paste() # self.tree.insert("", "end", text=self.text) self.tree.insert("", "end", text=self.text, values=self.text) أستاذي أرجو أن ترسل لي الكود كامل لم أفهم أين الخطأ لم ينجح كود اللصق والنسخ معي لو سمحت إذا نجح الأمر معك قم بتعديله على الكود وإرسله لي تم التعديل في 24 يناير بواسطة Ahmed Ahmed64 اقتباس
0 El Sayed El Tohamy نشر 24 يناير أرسل تقرير نشر 24 يناير import customtkinter as ctk import tkinter as tk import pandas as pd import os import pyperclip from tkinter import ttk , filedialog from customtkinter import CTkInputDialog from CTkMessagebox import CTkMessagebox class App(ctk.CTk,tk.Tk): def __init__(self): super().__init__() ctk.set_appearance_mode("light") # Modes: system (default), light, dark ctk.set_default_color_theme("green") # Themes: blue (default), dark-blue, green self.title("CTk example") self.columnconfigure(0, weight = 1) self.rowconfigure(0, weight = 1) # CSS //////////////////////////////////////// self.Font_NAME = str("Noto Kufi Arabic Medium") self.Button_font_size = int(12) self.Label_font_size = int(12) self.Entry_font_size = int(12) self.Text_Color = "#000000" self.Border_Frame_color = "#ff6c0b" self.FG_Frame_color = "#FFFFFF" self.Hover_Color="#FFD045" # images ********************************************************************************************** self.search_var = tk.StringVar() #---------------------------------------------------------------------------------------------- # Frame_Basis ********************************************************************************************** self.Frame_Basis = ctk.CTkFrame(self, fg_color="#F4F4F4") self.Frame_Basis.grid(row=0, column=0, pady=(5, 5),padx=(5, 5), sticky="ewsn") self.Frame_Basis.columnconfigure(0, weight = 1) self.Frame_Basis.rowconfigure(0, weight = 0) self.Frame_Basis.rowconfigure(1, weight = 0) self.Frame_Basis.rowconfigure(2, weight = 1) #---------------------------------------------------------------------------------------------- # Insert frames within a self.Frame_Basis ***************************************************************************** self.Frame_A = ctk.CTkFrame(self.Frame_Basis , border_width = 1,border_color= self.Border_Frame_color,fg_color = self.FG_Frame_color) self.Frame_A.grid(row=0, column=0, pady=(5, 5),padx=(5, 5), sticky="ewsn") self.Frame_A.columnconfigure(0, weight = 0) self.Frame_A.columnconfigure(1, weight = 1) #self.Frame_A.rowconfigure(0, weight = 1) # Insert tools within a Frame_A ************ self.label_Title = ctk.CTkLabel(self.Frame_A, text="test",text_color=self.Text_Color, fg_color="transparent", font=ctk.CTkFont(family=self.Font_NAME, size=18),justify="right") self.label_Title.grid(row = 0, column = 1, padx=(5, 5), pady=(5, 5), sticky="ew") self.label_Logo = ctk.CTkLabel(self.Frame_A, text="test" ,fg_color="transparent", font=ctk.CTkFont(family=self.Font_NAME, size=self.Label_font_size),anchor="e") self.label_Logo.grid(row = 0, column = 0, padx=(5, 5), pady=(5, 5), sticky="ew") # Insert tools within a Frame_B ************ self.Frame_B = ctk.CTkFrame(self.Frame_Basis , border_width = 1,border_color= self.Border_Frame_color,fg_color = self.FG_Frame_color) self.Frame_B.grid(row=1, column=0, pady=(5, 5),padx=(5, 5), sticky="ewsn") self.Frame_B.columnconfigure(0, weight = 1) self.Frame_B.columnconfigure(1, weight = 0) self.Frame_B.columnconfigure(2, weight = 0) self.Frame_B.rowconfigure(0, weight = 0) self.Button2 = ctk.CTkButton(self.Frame_B, text="تحميل Treeview",text_color=self.Text_Color ,compound="left",fg_color= "transparent",border_width = 1,border_color= self.Border_Frame_color,font=(self.Font_NAME,self.Button_font_size),hover_color=self.Hover_Color,command=self.lod_Treeview) self.Button2.grid(row=0, column=0, pady=(5, 5),padx=(5, 2), sticky="e") self.optionmenu1 = ctk.CTkOptionMenu(self.Frame_B,values=["إختر ورقة العمل"],text_color=self.Text_Color, fg_color="#ffae54",button_color="#ff6c0b", font=ctk.CTkFont(family="Calibri", size=12, weight="bold"),corner_radius=20) self.optionmenu1.grid(row=0, column=1, padx=(10, 10), pady=(10, 10), sticky="e") self.optionmenu1.configure(command=self.optionmenu_callback) self.Button1 = ctk.CTkButton(self.Frame_B, text="فتح ملف",text_color=self.Text_Color ,compound="left",fg_color= "transparent",border_width = 1,border_color= self.Border_Frame_color,font=(self.Font_NAME,self.Button_font_size),hover_color=self.Hover_Color,command=self.File_dialog) self.Button1.grid(row=0, column=2, pady=(5, 5),padx=(5, 10), sticky="e") self.label_search_Nm = ctk.CTkLabel(self.Frame_B, text="البحث",text_color=self.Text_Color, fg_color="transparent", font=ctk.CTkFont(family=self.Font_NAME, size=self.Label_font_size),anchor="w") self.label_search_Nm.grid(row = 1, column = 2, padx=(5, 5), pady=(5, 5), sticky="ew") self.entry1 = tk.Entry(self.Frame_B, font=ctk.CTkFont(family=self.Font_NAME, size=self.Entry_font_size),justify="right") self.entry1.grid(row=1, column=1, padx=(2, 10), pady=(5, 5), sticky="e") self.popup_menuA = tk.Menu(self, tearoff=0) self.popup_menuA.add_command(label="Cut", command=lambda: self.entry1.event_generate("<<Cut>>")) self.popup_menuA.add_command(label="Copy", command=lambda : self.entry1.event_generate("<<Copy>>")) self.popup_menuA.add_command(label="Paste", command=lambda: self.entry1.event_generate("<<Paste>>")) self.entry1.bind("<Button-3>", self.show_popup_menu) # Insert tools within a Frame_C ************ self.Frame_C = ctk.CTkFrame(self.Frame_Basis , border_width = 1,border_color= self.Border_Frame_color,fg_color = self.FG_Frame_color) self.Frame_C.grid(row=2, column=0, pady=(5, 5),padx=(5, 5), sticky="ewsn") self.Frame_C.columnconfigure(0, weight = 1) #Treeview self.tree = ttk.Treeview(self.Frame_C) self.tree.grid(row=0, column=0, padx=(5, 5), pady=(5, 5),sticky='nsew') self.tree.bind('<Button-3>', self.popup_menu) # القائمة self.popup1 = tk.Menu(self.tree, tearoff=0) self.popup1.add_command( command=self.it_copy, label="Copy") self.popup1.add_command( command=self.it_paste, label="paste") # النسخ def it_copy(self): item = self.tree.selection()[0] self.clipboard_clear() # self.clipboard_append(self.tree.item(item, option='text')) pyperclip.copy(self.tree.item(item, option='text')) # اللصق def it_paste(self): # self.text = self.clipboard_get() self.text = pyperclip.paste() # self.tree.insert("", "end", text=self.text) self.tree.insert("", "end", text=self.text, values=self.text) def File_dialog(self): self.file_name = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main", title="Open file okay?", filetypes=(("text files", "*.xlsx"),("all files", "*.*"))) self.df = pd.ExcelFile(self.file_name) self.optionmenu1.configure(values = self.df.sheet_names) if self.file_name: self.file_name = os.path.basename(self.file_name) def optionmenu_callback(self,value): self.vq = value return self.vq def lod_Treeview(self): if hasattr(self, 'file_name') and self.file_name: self.df = pd.read_excel(self.file_name,sheet_name=self.vq,header=None) self.A = self.df.iloc[1::1, [0]] self.A1 = pd.DataFrame(self.A ) self.tree["column"]=list(self.A1.columns) self.tree["show"] = "headings" for column in self.tree["column"]: self.tree.heading(column , text=column) df_rows = self.A1.to_numpy().tolist() for row in df_rows: self.tree.insert("" , "end" , text = row ,values = row) else: CTkMessagebox(title="خطأ",message="أرجو فتح ملف أولا",icon="cancel",option_1="OK", font=ctk.CTkFont(family="Noto Kufi Arabic Medium", size=14),justify="center") # إظهر القائمة def show_popup_menu(self,event): self.popup_menuA.post(event.x_root, event.y_root) def popup_menu(self,event): self.tree.identify_row(event.y) self.popup1.post(event.x_root, event.y_root) app = App() app.mainloop() الشيفرة كاملة، تم تجربتها وتقوم بعملية النسخ واللصق على الشجرة بشكل صحيح، والعنصر يظهر للمستخدم. 1 اقتباس
0 Ahmed Ahmed64 نشر 24 يناير الكاتب أرسل تقرير نشر 24 يناير بتاريخ 4 دقائق مضت قال El Sayed El Tohamy: import customtkinter as ctk import tkinter as tk import pandas as pd import os import pyperclip from tkinter import ttk , filedialog from customtkinter import CTkInputDialog from CTkMessagebox import CTkMessagebox class App(ctk.CTk,tk.Tk): def __init__(self): super().__init__() ctk.set_appearance_mode("light") # Modes: system (default), light, dark ctk.set_default_color_theme("green") # Themes: blue (default), dark-blue, green self.title("CTk example") self.columnconfigure(0, weight = 1) self.rowconfigure(0, weight = 1) # CSS //////////////////////////////////////// self.Font_NAME = str("Noto Kufi Arabic Medium") self.Button_font_size = int(12) self.Label_font_size = int(12) self.Entry_font_size = int(12) self.Text_Color = "#000000" self.Border_Frame_color = "#ff6c0b" self.FG_Frame_color = "#FFFFFF" self.Hover_Color="#FFD045" # images ********************************************************************************************** self.search_var = tk.StringVar() #---------------------------------------------------------------------------------------------- # Frame_Basis ********************************************************************************************** self.Frame_Basis = ctk.CTkFrame(self, fg_color="#F4F4F4") self.Frame_Basis.grid(row=0, column=0, pady=(5, 5),padx=(5, 5), sticky="ewsn") self.Frame_Basis.columnconfigure(0, weight = 1) self.Frame_Basis.rowconfigure(0, weight = 0) self.Frame_Basis.rowconfigure(1, weight = 0) self.Frame_Basis.rowconfigure(2, weight = 1) #---------------------------------------------------------------------------------------------- # Insert frames within a self.Frame_Basis ***************************************************************************** self.Frame_A = ctk.CTkFrame(self.Frame_Basis , border_width = 1,border_color= self.Border_Frame_color,fg_color = self.FG_Frame_color) self.Frame_A.grid(row=0, column=0, pady=(5, 5),padx=(5, 5), sticky="ewsn") self.Frame_A.columnconfigure(0, weight = 0) self.Frame_A.columnconfigure(1, weight = 1) #self.Frame_A.rowconfigure(0, weight = 1) # Insert tools within a Frame_A ************ self.label_Title = ctk.CTkLabel(self.Frame_A, text="test",text_color=self.Text_Color, fg_color="transparent", font=ctk.CTkFont(family=self.Font_NAME, size=18),justify="right") self.label_Title.grid(row = 0, column = 1, padx=(5, 5), pady=(5, 5), sticky="ew") self.label_Logo = ctk.CTkLabel(self.Frame_A, text="test" ,fg_color="transparent", font=ctk.CTkFont(family=self.Font_NAME, size=self.Label_font_size),anchor="e") self.label_Logo.grid(row = 0, column = 0, padx=(5, 5), pady=(5, 5), sticky="ew") # Insert tools within a Frame_B ************ self.Frame_B = ctk.CTkFrame(self.Frame_Basis , border_width = 1,border_color= self.Border_Frame_color,fg_color = self.FG_Frame_color) self.Frame_B.grid(row=1, column=0, pady=(5, 5),padx=(5, 5), sticky="ewsn") self.Frame_B.columnconfigure(0, weight = 1) self.Frame_B.columnconfigure(1, weight = 0) self.Frame_B.columnconfigure(2, weight = 0) self.Frame_B.rowconfigure(0, weight = 0) self.Button2 = ctk.CTkButton(self.Frame_B, text="تحميل Treeview",text_color=self.Text_Color ,compound="left",fg_color= "transparent",border_width = 1,border_color= self.Border_Frame_color,font=(self.Font_NAME,self.Button_font_size),hover_color=self.Hover_Color,command=self.lod_Treeview) self.Button2.grid(row=0, column=0, pady=(5, 5),padx=(5, 2), sticky="e") self.optionmenu1 = ctk.CTkOptionMenu(self.Frame_B,values=["إختر ورقة العمل"],text_color=self.Text_Color, fg_color="#ffae54",button_color="#ff6c0b", font=ctk.CTkFont(family="Calibri", size=12, weight="bold"),corner_radius=20) self.optionmenu1.grid(row=0, column=1, padx=(10, 10), pady=(10, 10), sticky="e") self.optionmenu1.configure(command=self.optionmenu_callback) self.Button1 = ctk.CTkButton(self.Frame_B, text="فتح ملف",text_color=self.Text_Color ,compound="left",fg_color= "transparent",border_width = 1,border_color= self.Border_Frame_color,font=(self.Font_NAME,self.Button_font_size),hover_color=self.Hover_Color,command=self.File_dialog) self.Button1.grid(row=0, column=2, pady=(5, 5),padx=(5, 10), sticky="e") self.label_search_Nm = ctk.CTkLabel(self.Frame_B, text="البحث",text_color=self.Text_Color, fg_color="transparent", font=ctk.CTkFont(family=self.Font_NAME, size=self.Label_font_size),anchor="w") self.label_search_Nm.grid(row = 1, column = 2, padx=(5, 5), pady=(5, 5), sticky="ew") self.entry1 = tk.Entry(self.Frame_B, font=ctk.CTkFont(family=self.Font_NAME, size=self.Entry_font_size),justify="right") self.entry1.grid(row=1, column=1, padx=(2, 10), pady=(5, 5), sticky="e") self.popup_menuA = tk.Menu(self, tearoff=0) self.popup_menuA.add_command(label="Cut", command=lambda: self.entry1.event_generate("<<Cut>>")) self.popup_menuA.add_command(label="Copy", command=lambda : self.entry1.event_generate("<<Copy>>")) self.popup_menuA.add_command(label="Paste", command=lambda: self.entry1.event_generate("<<Paste>>")) self.entry1.bind("<Button-3>", self.show_popup_menu) # Insert tools within a Frame_C ************ self.Frame_C = ctk.CTkFrame(self.Frame_Basis , border_width = 1,border_color= self.Border_Frame_color,fg_color = self.FG_Frame_color) self.Frame_C.grid(row=2, column=0, pady=(5, 5),padx=(5, 5), sticky="ewsn") self.Frame_C.columnconfigure(0, weight = 1) #Treeview self.tree = ttk.Treeview(self.Frame_C) self.tree.grid(row=0, column=0, padx=(5, 5), pady=(5, 5),sticky='nsew') self.tree.bind('<Button-3>', self.popup_menu) # القائمة self.popup1 = tk.Menu(self.tree, tearoff=0) self.popup1.add_command( command=self.it_copy, label="Copy") self.popup1.add_command( command=self.it_paste, label="paste") # النسخ def it_copy(self): item = self.tree.selection()[0] self.clipboard_clear() # self.clipboard_append(self.tree.item(item, option='text')) pyperclip.copy(self.tree.item(item, option='text')) # اللصق def it_paste(self): # self.text = self.clipboard_get() self.text = pyperclip.paste() # self.tree.insert("", "end", text=self.text) self.tree.insert("", "end", text=self.text, values=self.text) def File_dialog(self): self.file_name = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main", title="Open file okay?", filetypes=(("text files", "*.xlsx"),("all files", "*.*"))) self.df = pd.ExcelFile(self.file_name) self.optionmenu1.configure(values = self.df.sheet_names) if self.file_name: self.file_name = os.path.basename(self.file_name) def optionmenu_callback(self,value): self.vq = value return self.vq def lod_Treeview(self): if hasattr(self, 'file_name') and self.file_name: self.df = pd.read_excel(self.file_name,sheet_name=self.vq,header=None) self.A = self.df.iloc[1::1, [0]] self.A1 = pd.DataFrame(self.A ) self.tree["column"]=list(self.A1.columns) self.tree["show"] = "headings" for column in self.tree["column"]: self.tree.heading(column , text=column) df_rows = self.A1.to_numpy().tolist() for row in df_rows: self.tree.insert("" , "end" , text = row ,values = row) else: CTkMessagebox(title="خطأ",message="أرجو فتح ملف أولا",icon="cancel",option_1="OK", font=ctk.CTkFont(family="Noto Kufi Arabic Medium", size=14),justify="center") # إظهر القائمة def show_popup_menu(self,event): self.popup_menuA.post(event.x_root, event.y_root) def popup_menu(self,event): self.tree.identify_row(event.y) self.popup1.post(event.x_root, event.y_root) app = App() app.mainloop() الشيفرة كاملة، تم تجربتها وتقوم بعملية النسخ واللصق على الشجرة بشكل صحيح، والعنصر يظهر للمستخدم. أستاذي المعذرة إن أكثرت عليك بالأسئلة فعلا النسخ واللصق يعمل على الشجرة ولاكن أستاذي جرب أن تنسخ تم تلصق في مفكرة على الجهاز سوف تلاحظ أن الأسم بين القوسين لاتزال قائمة فما الحل في ذلك اقتباس
0 El Sayed El Tohamy نشر 25 يناير أرسل تقرير نشر 25 يناير (معدل) بتاريخ 14 ساعة قال Ahmed Ahmed64: ولاكن أستاذي جرب أن تنسخ تم تلصق في مفكرة على الجهاز سوف تلاحظ أن الأسم بين القوسين لاتزال قائمة فما الحل في ذلك نعم يتم استخدام الأقواس المعكوفة {} لإحاطة النصوص غير اللغة الإنجليزية، لتجنب هذه المشكلة سنقوم بعمل خوارزمية إضافية، بحيث تتم بالخطوات التالية: 1- النسخ من الشجرة 2- إزالة الأقواس من النص المنسوخ 3- إنشاء أداة إدخال مؤقتة ونقوم بإضافة النص إليها ثم نقوم بالنسخ من هذه الأداة، السبب، أن النسخ من أداة الإدخال لا يسبب نفس المشكلة قم بتعديل الوظيفتين التاليتين فقط # النسخ def it_copy(self): item = self.tree.selection()[0] # قراءة النص من العنصر text = self.tree.item(item, option='text') # استبدال الأقواس المعكوفة بنص فارغ text = text.replace("{", "").replace("}", "") # إنشاء أداة إدخال مؤقتة لاستخدامها في عملية النسخ والقص لتفادى المشاكل tempEntry = tk.Entry(self) tempEntry.insert(0, text) tempEntry.select_range(0, "end") tempEntry.event_generate("<<Copy>>") #pyperclip.copy(self.tree.item(item, option='text')) # اللصق def it_paste(self): self.text = self.clipboard_get() #self.text = pyperclip.paste() self.tree.insert("", "end", text=self.text, values=[self.text]) تم التعديل في 25 يناير بواسطة El Sayed El Tohamy اقتباس
السؤال
Ahmed Ahmed64
الرجاء مراجعة وتصحيح الكود لو وجد خطأ
أحتاج من الشفرة أن تقوم بالنسخ من أداة Treeview
حيث حاولت بجميع الطرق التي أعرفها ولاكن لم ينجح أمر النسخ
الأن سأرسل الشفرة الخاصة بالأداة وكود النسخ واللصق الرجاء المراجعة والتحقق من كتابة الكود
أنا أقوم بفتح ملف excel وأقوم بتحويلة إلى pd.DataFrame
ومن ثم أتعامل مع هذه DataFrame وأقوم بجلب عمود فقط وأقوم بعد ذلك بعرضة على أداة Treeview
وهذا الجزء الخاص بهذه العملية
حيث أصل إلى مرحلة العرض على أداة Treeview و تظهر النتيجة عليها
وعند محاولة نسخ سجل تظهر القائمة بدون مشاكل ولاكن عند الضغط لا يستجيب النسخ
9 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.