我有這個代碼來更改框架的標題。我這里有兩頁。在PageOne課堂上,我們得到了標題,按下按鈕,標題就會改變。而且,我們可以使用Go to page two按鈕導航到PageTwo. 在這里我們也可以這樣做。
這是我的問題,我如何才能只定義一個函式而不是使用 function add1()inPageOne和 function add2()in PageTwo。我的意思是我只定義一個函式并在PageOne中使用相同的函式PageTwo,并在frame2.
import tkinter as tk
class Data:
def __init__(self):
self.number1 = tk.StringVar()
self.number2 = tk.StringVar()
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.minsize(700, 700)
container = tk.Frame(self)
container.pack()
self.data = Data()
self.frames = {}
for F in (PageOne, PageTwo):
frame = F(container, self.data)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.frames[PageOne].page_button.config(command=self.go_to_page_two)
self.show_frame(PageOne)
def go_to_page_two(self):
self.show_frame(PageTwo)
def show_frame(self, c):
frame = self.frames[c]
frame.tkraise()
class PageOne(tk.Frame):
def __init__(self, parent, data):
super().__init__(parent)
self.data = data
entry1 = tk.Entry(self, textvariable=self.data.number1)
entry1.pack()
self.button1 = tk.Button(self, text="click", command=self.add1)
self.button1.pack()
self.frame1 = tk.LabelFrame(self, height=200, width=200, borderwidth=2)
self.frame1.pack()
self.page_button = tk.Button(self, text="Go to Page Two")
self.page_button.pack()
def add1(self):
self.frame1.config(text=str(self.data.number1.get()))
class PageTwo(tk.Frame):
def __init__(self, parent, data):
super().__init__(parent)
self.data = data
entry2 = tk.Entry(self, textvariable=self.data.number2)
entry2.pack()
self.button2 = tk.Button(self, text="click", command=self.add2)
self.button2.pack()
self.frame2 = tk.LabelFrame(self, height=200, width=200, borderwidth=2)
self.frame2.pack()
def add2(self):
self.frame2.config(text=str(self.data.number2.get()))
app = SampleApp()
app.mainloop()
uj5u.com熱心網友回復:
你可以這樣做:
import tkinter as tk
class Data:
def __init__(self):
self.number = tk.StringVar()
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.minsize(700, 700)
container = tk.Frame(self)
container.pack()
self.data = Data()
self.frames = {}
for F in (PageOne,):
frame = F(container, self.data)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
def show_frame(self, c):
frame = self.frames[c]
frame.tkraise()
class PageOne(tk.Frame):
def __init__(self, parent, data):
super().__init__(parent)
self.data = data
entry1 = tk.Entry(self, textvariable=self.data.number)
entry1.pack()
self.button1 = tk.Button(self, text="click", command=lambda : self.add(self.frame1, data.number))
self.button1.pack()
self.frame1 = tk.LabelFrame(self, height=200, width=200, borderwidth=2)
self.frame1.pack()
self.button2 = tk.Button(self, text="click", command=lambda : self.add(self.frame2, data.number))
self.button2.pack()
self.frame2 = tk.LabelFrame(self, height=200, width=200, borderwidth=2)
self.frame2.pack()
def add(self, frame, data):
frame.config(text=str(self.data.number.get()))
app = SampleApp()
app.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/469154.html
上一篇:獲取組合框值python
