Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tkinter Python-可以从其他选项卡访问数据的函数_Python_Oop_User Interface_Tkinter - Fatal编程技术网

Tkinter Python-可以从其他选项卡访问数据的函数

Tkinter Python-可以从其他选项卡访问数据的函数,python,oop,user-interface,tkinter,Python,Oop,User Interface,Tkinter,我想在Main_应用程序中创建一个函数,它可以访问其他选项卡中的数据。。。我怎样才能做到呢? 我试图通过键入“Page_2.entry2.insert(0,“test”)”来访问它,但它返回属性错误 我将感谢任何帮助,因为我已经挣扎了一段时间 class Main_Application(tk.Tk): def __init__(self): super().__init__() self.title("HAT") first_label = ttk.

我想在Main_应用程序中创建一个函数,它可以访问其他选项卡中的数据。。。我怎样才能做到呢? 我试图通过键入“Page_2.entry2.insert(0,“test”)”来访问它,但它返回属性错误 我将感谢任何帮助,因为我已经挣扎了一段时间

class Main_Application(tk.Tk):
def __init__(self):
    super().__init__()
    self.title("HAT")
    first_label = ttk.Label(self, text="lol").pack()
    
    #Notebook
    nb = ttk.Notebook(self)
    nb.pack()
    
    #Frames
    p1 = tk.Frame(nb)
    p2 = tk.Frame(nb)
    p3 = tk.Frame(nb)
    p4 = tk.Frame(nb)
    
    
    nb.add(p1, text="Page1")
    nb.add(p2, text="Page2")
    nb.add(p3, text="Page3")
    nb.add(p4, text="Page4")
    

    Page_1(p1).pack()
    Page_2(p2).pack()

def load_it_all(self):
    print(Page_01(self).user_input.get())
    Page_02.entry2.insert(0, "test")
    # <HERE I WOULD LIKE TO CALL THE DATA FROM 
    #First one prints the data from Page_01 and second i would like to insert data in Page_02.entry2



class Page_1(ttk.Frame):
def __init__(self, container):
    super().__init__(container)
    #Stringvar
    self.user_input = tk.StringVar()
    #Labels
    label = ttk.Label(self, text="HU3: ")

    #Entries
    entry = ttk.Entry(self, textvariable=self.user_input)
    #Inserts
    entry.insert(0, "4500")
    #Buttons
    button = ttk.Button(self, text="Apply", command=lambda: Main_Application.load_it_all(self))
    #Geo
    label.pack()
    entry.pack()
    button.pack()
def test(self):
    print(self.user_input.get())



class Page_2(ttk.Frame):
def __init__(self, container):
    super().__init__(container)
    self.user_input = tk.StringVar()
    label = ttk.Label(self, text="Trend from last cycle ")

    #Entries
    entry2 = ttk.Entry(self, textvariable=self.user_input)
    #Inserts
    # self.entry2.insert(0, "4500")
    #Buttons
    # button = ttk.Button(self, text="Apply", command=self.test2)
    #Geo
    label.pack()
    entry2.pack()
    # button.pack()
类主应用程序(tk.tk):
定义初始化(自):
super()。\uuuu init\uuuuu()
自我名称(“帽子”)
first_label=ttk.label(self,text=“lol”).pack()
#记事本
nb=ttk.笔记本电脑(自身)
注意:包装()
#框架
p1=传统框架(nb)
p2=传统框架(nb)
p3=传统框架(nb)
p4=传统框架(nb)
注:添加(p1,text=“第1页”)
注:添加(p2,text=“第2页”)
注:添加(p3,text=“第3页”)
注:添加(第4页,text=“第4页”)
第1页(p1).pack()
第2页(p2).pack()
def加载所有(自身):
打印(第\u 01页(self.user\u input.get())
第02页条目2.插入(0,“测试”)
#您的问题包括

  • 不正确启动超级计算机
  • 容器太多
  • 随机使用
    ttk
    widgets
  • 对范围理解不足
  • 命名语法错误
  • 不必要的变量
下面是您正在尝试做的工作示例

import tkinter as tk, tkinter.ttk as ttk

class Main(tk.Tk):
    def __init__(self):
        #this is how to properly init a super
        tk.Tk.__init__(self)

        #make notebook fill display
        self.grid_rowconfigure(0, weight=1)
        self.grid_columnconfigure(0, weight=1)
        
        #Notebook
        nb = ttk.Notebook(self)
        nb.grid(row=0, column=0, sticky='nswe')
        
        #keep a reference to the pages
        self.p1 = Page_1(self)
        self.p2 = Page_2(self)
        
        #tabs
        nb.add(self.p1, text="Page 1")
        nb.add(self.p2, text="Page 2")
        
    
    def load_it_all(self):
        #use the page references to access and share data
        self.p2.input = self.p1.input
        

class Page_1(tk.Frame):
    @property
    def input(self):
        return self.userinput.get()
        
    @input.setter
    def input(self, value):
        self.userinput.delete(0, 'end')
        self.userinput.insert(0, value)
         
    def __init__(self, master, **kwargs):
        tk.Frame.__init__(self, master, **kwargs)
        tk.Label(self, text="HU3: ").grid(row=0, column=0)
    
        self.userinput = tk.Entry(self)
        self.userinput.grid(row=0, column=1)
        self.input="4500"
        
        tk.Button(self, text="Apply", command=master.load_it_all).grid(row=0, column=2)


class Page_2(tk.Frame):
    @property
    def input(self):
        return self.userinput.get()
        
    @input.setter
    def input(self, value):
        self.userinput.delete(0, 'end')
        self.userinput.insert(0, value)
         
    def __init__(self, master, **kwargs):
        tk.Frame.__init__(self, master, **kwargs)
        tk.Label(self, text="Trend from last cycle ").grid(row=0, column=0)
    
        self.userinput = tk.Entry(self)
        self.userinput.grid(row=0, column=1)
        

if __name__ == "__main__":
    root = Main()
    root.geometry('800x600')
    root.title("HAT")
    root.mainloop()
你的问题包括

  • 不正确启动超级计算机
  • 容器太多
  • 随机使用
    ttk
    widgets
  • 对范围理解不足
  • 命名语法错误
  • 不必要的变量
下面是您正在尝试做的工作示例

import tkinter as tk, tkinter.ttk as ttk

class Main(tk.Tk):
    def __init__(self):
        #this is how to properly init a super
        tk.Tk.__init__(self)

        #make notebook fill display
        self.grid_rowconfigure(0, weight=1)
        self.grid_columnconfigure(0, weight=1)
        
        #Notebook
        nb = ttk.Notebook(self)
        nb.grid(row=0, column=0, sticky='nswe')
        
        #keep a reference to the pages
        self.p1 = Page_1(self)
        self.p2 = Page_2(self)
        
        #tabs
        nb.add(self.p1, text="Page 1")
        nb.add(self.p2, text="Page 2")
        
    
    def load_it_all(self):
        #use the page references to access and share data
        self.p2.input = self.p1.input
        

class Page_1(tk.Frame):
    @property
    def input(self):
        return self.userinput.get()
        
    @input.setter
    def input(self, value):
        self.userinput.delete(0, 'end')
        self.userinput.insert(0, value)
         
    def __init__(self, master, **kwargs):
        tk.Frame.__init__(self, master, **kwargs)
        tk.Label(self, text="HU3: ").grid(row=0, column=0)
    
        self.userinput = tk.Entry(self)
        self.userinput.grid(row=0, column=1)
        self.input="4500"
        
        tk.Button(self, text="Apply", command=master.load_it_all).grid(row=0, column=2)


class Page_2(tk.Frame):
    @property
    def input(self):
        return self.userinput.get()
        
    @input.setter
    def input(self, value):
        self.userinput.delete(0, 'end')
        self.userinput.insert(0, value)
         
    def __init__(self, master, **kwargs):
        tk.Frame.__init__(self, master, **kwargs)
        tk.Label(self, text="Trend from last cycle ").grid(row=0, column=0)
    
        self.userinput = tk.Entry(self)
        self.userinput.grid(row=0, column=1)
        

if __name__ == "__main__":
    root = Main()
    root.geometry('800x600')
    root.title("HAT")
    root.mainloop()

请在您的帖子中发布完整的回溯。另外,您确定这不是
第1页(自我)…
?您已经在
def load\u all
中编写了
Page\u 01
Page\u 02
,但我看不到这两个页面都有定义。请在您的帖子中发布完整的回溯。另外,您确定这不是
Page\u 1(self)
?您已经在
def load\u it\u all
中写入了
Page\u 01
Page\u 02
,但我看不到这两个页面都已定义。