اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

أحتاج معالجة لهذا الكود بحيث يقوم بالوظيفة الأتية

عند الضغط على زر اختيار ملف يتم تطبيق الدالة LoadFile و المسؤولة عن تحميل ملف إكسيل بداخلها

        def LoadFile():
            filepath = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main",title="Open file okay?",filetypes= (("text files","*.xlsx"),("all files","*.*")))
            filepathA = Path(filepath)
            self.AS = pd.ExcelFile(filepathA)

الأن من بعد تم اختيار الملف وتحميله أريد أن يتم قراءة أسماء أوراق العمل الموجودة بداخل ملف الإكسيل

وتحميلها كاقائمة إلى أداة 

        self.optionmenu1 = customtkinter.CTkOptionMenu(self)
        self.optionmenu1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="we")

 

إليكم الأن الكود بالكامل للمعالجة عليه بالمطلوب

import customtkinter
from tkinter import filedialog
from pathlib import Path
import pandas as pd

class Frame1(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.AS = None

        def LoadFile():
            filepath = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main",title="Open file okay?",filetypes= (("text files","*.xlsx"),("all files","*.*")))
            filepathA = Path(filepath)
            self.AS = pd.ExcelFile(filepathA)
              
        def sht():
            
            if self.AS:
                AD = self.AS.sheet_names
                self.optionmenu1.values=AD
                return AD
            else:
                return []
        self.button1 = customtkinter.CTkButton(self, text="إختيار ملف",font=customtkinter.CTkFont(family="Calibri" ,size=12, weight="bold"),command=LoadFile)
        self.button1.grid(row=0, column=1, padx=3, pady=(3, 0), sticky="we")  

        self.optionmenu1 = customtkinter.CTkOptionMenu(self)
        self.optionmenu1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="we")






class Frame2(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.checkbox_1 = customtkinter.CTkCheckBox(self, text="checkbox 1")
        self.checkbox_1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")
       
                      
class Frame3(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
          
        def button_event():
            print("خروج")

        self.button2 = customtkinter.CTkButton(self, text="خروج",state= "disabled",font=customtkinter.CTkFont(family="Calibri" ,size=12, weight="bold"),command=button_event)
        self.button2.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")
                

class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()

        self.title("my app")
        self.geometry("400x180")
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)
        customtkinter.set_appearance_mode("dark")
        customtkinter.set_default_color_theme("dark-blue")
      
        self.Frame_A = Frame1(self)
        self.Frame_A.grid(row=0, column=0, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_B = Frame2(self)
        self.Frame_B.grid(row=0, column=1, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_C = Frame3(self)
        self.Frame_C.grid(row=1, column=0, padx=1, pady=(1, 10), sticky="nswe")
    
app = App()
app.mainloop()

 

Recommended Posts

  • 0
نشر

السلام عليكم من اجل ان تقوم الداله LoadFile بتحميل الملف كما تريد يجب عليك تعدليها للاتي بحيث  تقوم باستدعاء الدالة sht للحصول على أسماء الأوراق وتحديث قيم OptionMenu بأسماء الأوراق هذه.

import customtkinter
from tkinter import filedialog
from pathlib import Path
import pandas as pd

class Frame1(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.AS = None

        def LoadFile():
            filepath = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main", title="Open file okay?", filetypes=(("text files", "*.xlsx"), ("all files", "*.*")))
            filepathA = Path(filepath)
            self.AS = pd.ExcelFile(filepathA)
            
            
            AD = self.sht()
            self.optionmenu1.values = AD

        def sht():
            if self.AS:
                AD = self.AS.sheet_names
                return AD
            else:
                return []

        self.button1 = customtkinter.CTkButton(self, text="إختيار ملف", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"), command=LoadFile)
        self.button1.grid(row=0, column=1, padx=3, pady=(3, 0), sticky="we")

        self.optionmenu1 = customtkinter.CTkOptionMenu(self)
        self.optionmenu1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="we")

class Frame2(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.checkbox_1 = customtkinter.CTkCheckBox(self, text="checkbox 1")
        self.checkbox_1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")

class Frame3(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)

        def button_event():
            print("خروج")

        self.button2 = customtkinter.CTkButton(self, text="خروج", state="disabled", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"), command=button_event)
        self.button2.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")

class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()

        self.title("my app")
        self.geometry("400x180")
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)
        customtkinter.set_appearance_mode("dark")
        customtkinter.set_default_color_theme("dark-blue")

        self.Frame_A = Frame1(self)
        self.Frame_A.grid(row=0, column=0, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_B = Frame2(self)
        self.Frame_B.grid(row=0, column=1, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_C = Frame3(self)
        self.Frame_C.grid(row=1, column=0, padx=1, pady=(1, 10), sticky="nswe")

app = App()
app.mainloop()

 

  • 0
نشر (معدل)
بتاريخ 1 ساعة قال Ahmed Emad35:

السلام عليكم من اجل ان تقوم الداله LoadFile بتحميل الملف كما تريد يجب عليك تعدليها للاتي بحيث  تقوم باستدعاء الدالة sht للحصول على أسماء الأوراق وتحديث قيم OptionMenu بأسماء الأوراق هذه.

import customtkinter
from tkinter import filedialog
from pathlib import Path
import pandas as pd

class Frame1(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.AS = None

        def LoadFile():
            filepath = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main", title="Open file okay?", filetypes=(("text files", "*.xlsx"), ("all files", "*.*")))
            filepathA = Path(filepath)
            self.AS = pd.ExcelFile(filepathA)
            
            
            AD = self.sht()
            self.optionmenu1.values = AD

        def sht():
            if self.AS:
                AD = self.AS.sheet_names
                return AD
            else:
                return []

        self.button1 = customtkinter.CTkButton(self, text="إختيار ملف", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"), command=LoadFile)
        self.button1.grid(row=0, column=1, padx=3, pady=(3, 0), sticky="we")

        self.optionmenu1 = customtkinter.CTkOptionMenu(self)
        self.optionmenu1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="we")

class Frame2(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.checkbox_1 = customtkinter.CTkCheckBox(self, text="checkbox 1")
        self.checkbox_1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")

class Frame3(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)

        def button_event():
            print("خروج")

        self.button2 = customtkinter.CTkButton(self, text="خروج", state="disabled", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"), command=button_event)
        self.button2.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")

class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()

        self.title("my app")
        self.geometry("400x180")
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)
        customtkinter.set_appearance_mode("dark")
        customtkinter.set_default_color_theme("dark-blue")

        self.Frame_A = Frame1(self)
        self.Frame_A.grid(row=0, column=0, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_B = Frame2(self)
        self.Frame_B.grid(row=0, column=1, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_C = Frame3(self)
        self.Frame_C.grid(row=1, column=0, padx=1, pady=(1, 10), sticky="nswe")

app = App()
app.mainloop()

 

أخي قمت بتجرب الكود الذي قمت حضرتك بتعديله ولاكن لم يعمل 

لم تدرج الأسماء بالقائمة فأين الخطأ الرجاء أخي التحقق من الكود

حيث أن الخطأ يظهر هكذا

AttributeError: 'Frame1' object has no attribute 'sht'

تم التعديل في بواسطة Ahmed Ahmed64

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...