เรียกใช้ Tkinter Objects จากไฟล์อื่น

Nov 03 2020
class SneakerGuide(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        
        global stockXURLInput
        stockXURLInput = Entry(sneakerBasicDetails)
        stockXURLInput.grid(row=5, column=1)

ดังนั้นฉันจึงมีคลาสนี้และภายในนั้นฉันมีฟังก์ชั่นนี้ซึ่งเป็นฟังก์ชันการเริ่มต้นและในขณะที่ฉันมีสิ่งต่าง ๆ มากมายที่ฉันต้องการ. get () จาก ฉันพิมพ์แค่ตัวอย่างเดียว แต่ฉันกำลังพยายามรับอินพุตรายการนอกคลาสนั้น (อันที่จริงฉันพยายามดึงมันมาจากไฟล์อื่น แต่ฉันรู้วิธีอิมพอร์ตและสิ่งต่างๆฉันจะทำอย่างไรในกรณีนี้โดยเฉพาะ

คำตอบ

BryanOakley Nov 03 2020 at 08:29

สำหรับอ็อบเจ็กต์ที่คุณต้องการเข้าถึงนอกคลาสคุณต้องทำให้เป็นอินสแตนซ์แอ็ตทริบิวต์ของคลาส

ตัวอย่างเช่นคุณจะไม่ใช้globallike ในตัวอย่างของคุณ การใช้งานglobalส่วนใหญ่ผิดวัตถุประสงค์ของการใช้คลาส แต่ให้ทำดังนี้

class SneakerGuide(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        
        self.stockXURLInput = Entry(sneakerBasicDetails)
        self.stockXURLInput.grid(row=5, column=1)

เพื่อให้ได้ค่าจากรายการสิ่งที่คุณต้องมีคือการอ้างอิงถึงอินสแตนซ์ของคลาส

root = tk.Tk()
...
guide = SneakerGuide(root)
...
print(f"The url is {guide.stockXURLInput.get9)}")

นี่ไม่ใช่สิ่งพิเศษสำหรับ tkinter นี่คือวิธีการทำงานของวัตถุ python ทั้งหมด