【发布时间】:2022-01-05 05:40:06
【问题描述】:
我想为我的代码组织 GUI,它有 2 个部分。我通过添加Radiobutton s组织它,其中选择一个时,它仅显示“第1节”。而当另一个Radiobutton被选中时,它应该不显示“Section 1”,而只显示“Section 2”。
这就是想法,一切顺利,除了如果我更改Radiobutton 选择,它会显示两个部分。
如何让它一次只显示一个?
这是一个可以运行的示例代码:
from tkinter import *
def main():
root = Tk()
app = Window(root)
root.mainloop()
class Window():
def __init__(self, master):
self.master=master
self.master.title("Test")
self.master.geometry('1000x700')
self.Radio=Label (self.master, text="Select Method", bg='Lavender')
self.RadioFrame=LabelFrame(self.master, width=230, height=150, labelwidget=self.Radio, bg='lavender')
self.RadioFrame.place(x=200, y=35)
selection = IntVar()
selection.set(0)
r1 = Radiobutton(self.RadioFrame, text="Option 1", variable=selection, value=1, command=lambda: Clicked(selection.get()), bg='lavender').pack()
r2 = Radiobutton(self.RadioFrame, text="Option 2", variable=selection, value=2, command=lambda: Clicked(selection.get()), bg='lavender').pack()
def Clicked(variable):
if selection.get() ==1:
self.label_1=Label (self.master, text="label 1", bg='lavender')
self.label_1Frame=LabelFrame(self.master, width=230, height=90, labelwidget= self.label_1, bg='lavender')
self.label_1Frame.place(x=490, y=35)
elif selection.get() ==2:
self.label_2=Label (self.master, text="label_2", bg='lavender')
self.label_2Frame=LabelFrame(self.master, width=230, height=60, labelwidget= self.label_2, bg='lavender')
self.label_2Frame.place(x=490, y=340)
#root.mainloop()
if __name__=='__main__':
main()
【问题讨论】:
-
您可能需要考虑一种不同的方式来组织您的 GUI,这可能会占用更少的屏幕空间:请参阅 Switch between two frames in tkinter。
标签: python tkinter radio-button