【发布时间】:2021-03-14 10:45:29
【问题描述】:
我想获得分屏,如果我单击左侧屏幕中的按钮,则框架应显示在右侧屏幕中。所以我使用了带有 2 个不同帧(右帧和左帧)的 Panedwindow。在左框架中给出按钮(button1 和 button2)。如果我单击按钮 1,则 Frame1(Frame1 类)应显示在右框架中,如果我单击按钮 2,则 Frame2(Frame2 类)应显示在右框架中,因此使用 raiseFrame 相应地更改框架,但如果我单击,则会低于错误按钮。
import tkinter as tk
from tkinter import *
from tkinter import ttk,Tk, BOTH, Menu
def raiseFrame(frame):
frame.tkraise()
class Main(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
m = PanedWindow(height=500, width=1000)
m.pack(side=tk.RIGHT,fill = tk.Y)
leftframe = Frame(m)
m.add(leftframe)
button1 =tk.Button(leftframe, text="first frame",command=lambda: raiseFrame(Frame1))
button1.pack(side = tk.TOP, expand=1)
button2 =tk.Button(leftframe, text="2nd frame",command=lambda: raiseFrame(Frame2))
button2.pack(side = tk.TOP, expand=1)
rightframe= Frame(m, bg="green")
m.add(rightframe)
class Frame1(tk.Frame):
def __init__(self):
tk.Frame.__init__(self, parent)
label = tk.Label(rightframe, text="1st FRAME").pack(side = tk.LEFT,fill = tk.BOTH)
class Frame2(tk.Frame):
def __init__(self):
tk.Frame.__init__(self,parent)
label = tk.Label(rightframe, text="2nd FRAME").pack(side = tk.LEFT,fill = tk.BOTH)
app = Main()
app.mainloop()
错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Python\Python38\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:\Users\New folder\GUI.py", line 23, in <lambda>
button1 =tk.Button(leftframe, text="first frame",command=lambda: raiseFrame(Frame1))
File "C:\Users\New folder\GUI.py", line 7, in raiseFrame
frame.tkraise()
TypeError: tkraise() missing 1 required positional argument: 'self'
【问题讨论】:
-
你在类而不是对象上调用
.tkraise。
标签: python python-3.x tkinter