Tkinter Python-可以从其他选项卡访问数据的函数
我想在Main_应用程序中创建一个函数,它可以访问其他选项卡中的数据。。。我怎样才能做到呢? 我试图通过键入“Page_2.entry2.insert(0,“test”)”来访问它,但它返回属性错误 我将感谢任何帮助,因为我已经挣扎了一段时间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.
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
,但我看不到这两个页面都已定义。