Radiobutton
Radiobutton элементі екі жағдайда болуы мүмкін: белгіленген немесе белгіленбеген. Бірақ Checkbutton-ге қарағанда, қосқыштар бір ғана қосқышты таңдай алатын топты жасай алады.
Ауыстырып-қосқыштарды қолданамыз:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
from tkinter import *
root = Tk()
root.title("GUI на Python")
root.geometry("300x250")
header = Label(text="Выберите курс", padx=15, pady=10)
header.grid(row=0, column=0, sticky=W)
lang = IntVar()
python_checkbutton = Radiobutton(text="Python", value=1, variable=lang, padx=15, pady=10)
python_checkbutton.grid(row=1, column=0, sticky=W)
javascript_checkbutton = Radiobutton(text="JavaScript", value=2, variable=lang, padx=15, pady=10)
javascript_checkbutton.grid(row=2, column=0, sticky=W)
selection = Label(textvariable=lang, padx=15, pady=10)
selection.grid(row=3, column=0, sticky=W)
root.mainloop()
|
Мұнда екі ауыстырып-қосқыш анықталды, бірақ екеуі де бір IntVar айнымалыcына байланысқан. Сонымен қатар, олар value параметрі арқылы орнатылатын әр түрлі мәндерге ие. Сондықтан бір ауыстырып-қосқышты қосқан кезде, екіншісі автоматты түрде белгіленбеген күйге ауысады.
Басқа виджет конструкторлары сияқты Radiobutton конструкторы ауыстырып-қосқышын баптау үшін екі параметрді қабылдайды:
1
|
Radiobutton (master, options)
|
Бірінші параметр-master ата-ана терезесіне сілтеме береді, ал екінші параметр келесі параметрлердің жиынтығын біріктіреді:
activebackground: басылған күйде ауыстырып-қосқыштың фон түсі
activeforeground: басылған күйде ауыстырып-қосқыштың мәтінінің түсі
bg: ауыстырып-қосқыштың фондық түсі
bitmap: ауыстырып-қосқыш үшін монохромды сурет
borderwidth: ауыстырып-қосқыштың айналасындағы шекара
command: ауыстырып-қосқышты басқан кезде туындайтын функцияға сілтеме
cursor: элементтің үстіне апарғандағы курсор
font: қаріп
fg: мәтін түсі
height: мәтін жолдарында элемент биіктігі. Әдепкі мәні - 1
image: элементте көрсетілетін графикалық сурет
justify: мәтінді туралау, CENTER, LEFT, RIGHT мәндерін қабылдайды
padx: мәтіннен ауыстырып-қосқыштың шекарасына дейінгі оң және сол жақтағы шегіністер
pady: мәтіннен ауыстырып-қосқыштың шекарасына дейінгі жоғарғы және төменгі жақтағы шегіністер
relief: ауыстырып-қосқыш стилі, әдепкі бойынша FLAT мәні бар
selectcolor: ауыстырып-қосқыш домалағының түсі
selectimage: ауыстырып-қосқышта сурет, ол белгіленген күйде болғанда
state: элемент күйі, NORMAL (әдепкі), DISABLED және ACTIVE мәндерін қабылдайды
text: элемент мәтіні
textvariable: ауыстырып-қосқыш мәтінін көрсететін StringVar айнымалысына байланыс орнатады
underline: элемент мәтініндегі асты сызылған таңбаның индексі
variable: ауыстырып-қосқыш күйін сақтайтын IntVar типті айнымалыға сілтеме
value: ауыстырып-қосқыштың мәні
width: элемент ені
wraplength: элементтің мәтінінде басқа жолға таңбаларды тасымалдауды белгілейді
Пайдаланушы таңдауын өңдеу арқылы күрделі мысалда осы параметрлердің қатарын қолданамыз:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
from tkinter import *
languages = [("Python", 1), ("JavaScript", 2), ("C#", 3), ("Java", 4)]
def select():
l = language.get()
if l == 1:
sel.config(text="Выбран Python")
elif l == 2:
sel.config(text="Выбран JavaScript")
elif l == 3:
sel.config(text="Выбран C#")
elif l == 4:
sel.config(text="Выбран Java")
root = Tk()
root.title("GUI на Python")
root.geometry("300x280")
header = Label(text="Выберите курс", padx=15, pady=10)
header.grid(row=0, column=0, sticky=W)
language = IntVar()
row = 1
for txt, val in languages:
Radiobutton(text=txt, value=val, variable=language, padx=15, pady=10, command=select)\
.grid(row=row, sticky=W)
row += 1
sel = Label(padx=15, pady=10)
sel.grid(row=row, sticky=W)
root.mainloop()
|
Listbox
Tkinter-дегі Listbox элементі нысандар тізімін ұсынады. Қарапайым тізімді анықтайық:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
from tkinter import *
languages = ["Python", "JavaScript", "C#", "Java"]
root = Tk()
root.title("GUI на Python")
root.geometry("300x280")
languages_listbox = Listbox()
for language in languages:
languages_listbox.insert(END, language)
languages_listbox.pack()
root.mainloop()
|
For циклындағы listbox элементтерді толтыру үшін languages тізімінің барлық элементтеріне өтіңіз және insert() әдісі арқылы listbox-ке әрбір элементті қосыңыз. Бірінші аргумент ретінде insert-ке элементті кірістіру индексі беріледі. Бірақ элементтерді тізбектеп қосқымыз келсе, индекстің орнына END мәнін пайдалануға болады.
Listbox виджетін баптау үшін, оның конструкторында келесі параметрлерді көрсете аламыз:
|