PySimpleGUI Tab元素
有时,应用程序的GUI设计太大,无法容纳在一个窗口中,即使我们试图将所有元素安排在主窗口的布局中,也会变得非常笨拙。使用Tab元素可以使设计非常方便、有效,并使用户易于浏览。Tab元素也是一个容器元素,如Frame或Column。
首先将这些元素分成逻辑上相关的组,并将它们放在独立的布局中。它们中的每一个都用来构建一个Tab元素。这些Tab元素被放在一个TabGroup中,按照下面的语法—
# l1 is the layout for tab1
# l2 is the layout for tab2
tab1=PySimpleGUI.Tab("title1", l1)
tab2=PySimpleGUI.Tab("title2", l2)
Tg = PySimpleGUI.TabGroup([[tab1, tab2]])
# This titlegroup object may be further used
# in the row of the main layout.
标签组和标签元素的优点是,在一个组中的所有标签中,一次只有一个标签是可见的。当你点击一个标签的标题时,它就变得可见,而其他的都被隐藏。这样,整个可用区域都可以被利用来显示单个标签中的元素。这使得GUI的设计非常简洁和有效。
请记住,Tab元素永远不会直接放在主布局中。它们总是包含在一个TabGroup中。
To construct a Tab element, use the following syntax −
PySimpleGUI.Tab(title, layout, title_color)
这里,标题参数是一个显示在标签上的字符串。layout指的是要显示在顶部的元素的嵌套列表,title_color指的是用于显示标题的颜色。
在下面的例子中,一个典型的注册表格被设计成一个有两个标签的标签组,一个叫做基本信息,另一个叫做联系细节。在标签组下面,有两个按钮,分别是确定和取消。
import PySimpleGUI as psg
psg.set_options(font=("Arial Bold",14))
l1=psg.Text("Enter Name")
lt1=psg.Text("Address")
t1=psg.Input("", key='-NM-')
a11=psg.Input(key='-a11-')
a12=psg.Input(key='-a12-')
a13=psg.Input(key='-a13-')
tab1=[[l1,t1],[lt1],[a11], [a12], [a13]]
lt2=psg.Text("EmailID:")
lt3=psg.Text("Mob No:")
a21=psg.Input("", key='-ID-')
a22=psg.Input("", key='-MOB-')
tab2=[[lt2, a21], [lt3, a22]]
layout = [[psg.TabGroup([
[psg.Tab('Basic Info', tab1),
psg.Tab('Contact Details', tab2)]])],
[psg.OK(), psg.Cancel()]
]
window = psg.Window('Tab Group Example', layout)
while True:
event, values = window.read()
print (event, values)
if event in (psg.WIN_CLOSED, 'Exit'):
break
window.close()
运行上述代码。带有两个标签的主窗口被显示出来,第一个标签默认是可见的。
点击第二个标签的标题,将显示两个输入控件,用于输入EmailID和手机号码。