- Оригинальный адрес ссылки на блог
-
PythonПредоставляет библиотеку нескольких графических интерфейсов разработки, несколько часто используемыхPython GUIБиблиотека выглядит следующим образом: -
Tkinter:Tkinterмодуль (Tk интерфейс) естьPythonИнтерфейс к стандартному набору инструментов Tk GUI.TkиTkinterдоступны в большинствеUnixИспользуется под платформой, его также можно использовать вWindowsиMacintoshв системе.Tk8.0Последующие версии могут добиться локального стиля окна и хорошо работать в большинстве платформ. -
wxPython:wxPythonэто программное обеспечение с открытым исходным кодомPythonОтличный набор языковGUIГрафическая библиотека, позволяющаяPythonПрограммистам легко создавать полноценные, функциональныеGUIПользовательский интерфейс. -
Jython:Jythonпрограмма может бытьJavaБесшовная интеграция. Помимо некоторых стандартных модулей,JythonиспользоватьJavaмодуль.Jythonпочти стандартныйPythonне зависит отC语言的全部模块。 Например,JythonПользовательский интерфейс будет использоватьсяSwing,AWTилиSWT.Jythonможет быть скомпилирован динамически или статически вJavaбайт-код
один.Tkinterвводить
-
TkinterдаPythonстандартGUIбиблиотека.PythonиспользоватьTkinterможно быстро создатьGUIприменение. - так как
Tkinterвстроен вpythonв установочном пакете просто установитеPythonтогдаimport Tkinterбиблиотека иIDLEтакже использоватьTkinterнаписанный, для простого графического интерфейсаTkinterвсе еще управляемый
требует внимания:Python3.xБиблиотека, используемая версией, называетсяtkinter, инициалыTнижний регистр
import tkinter
- Создать программу с графическим интерфейсом
- 1. Импорт
tkinterмодуль - 2. Создание элементов управления
- 3, указать этот элемент управления
master, т.е. какому управлению принадлежит это управление - 4. Расскажите
GM(geometry manager)Создан элемент управления
- 1. Импорт
1. Главное окно
- существует
iOSКаждыйAPPиметь главное окноwindow, ДолженwindowЭто самый простой вид из всех видов подземелья рта.View - существует
PythonУ китайских детских стишков также будет главное окно, смотрите нижеtkinterКак создать главное окно
# 主窗口
import tkinter
# 创建主窗口
window = tkinter.Tk()
# 设置标题
window.title('Titanjun')
# 设置窗口大小
window.geometry('400x400')
# 进入消息循环
window.mainloop()
Эффект следующий
Главное окно имеет следующий метод, кроме вышеуказанного метода
# 框体大小的可调性, 分别表示x, y方向的可变性
window.resizable(0, 0)
# 退出
window.quit()
# 刷新页面
window.update()
два.Tkinterкомпоненты
-
Tkinterпредоставляет различные элементы управления, такие как кнопки, метки и текстовые поля,GUIиспользуемые в приложениях, эти элементы управления часто называют элементами управления или виджетами. - В настоящее время существует 15 виджетов Tkinter, ниже приводится краткое введение в эти виджеты.
| контролирует | описывать |
|---|---|
Label |
Элемент управления Label, который может отображать текст и растровые изображения. |
Button |
Кнопочное управление, которое отображает кнопку в программе |
Entry |
Элемент управления вводом; используется для отображения простого текстового содержимого |
Checkbutton |
Элемент управления несколькими полями выбора; используется для предоставления нескольких полей выбора в программе. |
Frame |
Frame control; отображает прямоугольную область на экране, в основном используемую в качестве контейнера |
Canvas |
Canvas Control; отображение текста или графических элементов, таких как линии |
Listbox |
Элемент управления списком; вListboxВиджет используется для отображения списка строк пользователю |
Menubutton |
Управление кнопкой меню, так как пункты меню отображаются. |
Menu |
Управление меню; отображает строки меню, раскрывающиеся и всплывающие меню. |
Message |
Управление сообщениями; используется для отображения нескольких строк текста сlabelпохожий |
Radiobutton |
Управление радиокнопкой; отображает состояние радиокнопки |
Scale |
Контроль диапазона; отображает числовую шкалу, числовой интервал, который определяет диапазон для вывода |
Scrollbar |
Полоса прокрутки, используемая, когда содержимое выходит за пределы визуальной области, например поле со списком. |
Text |
Текстовый элемент управления; используется для отображения нескольких строк текста |
Spinbox |
элементы управления вводом; иEntryАналогично, но можно указать значение диапазона ввода |
PanedWindow |
Плагин для управления расположением окон, который может содержать один или несколько дочерних элементов управления. |
LabelFrame |
Простой контроль контейнера, обычно используемый с комплексным макетом окна |
tkMessageBox |
Окно сообщения для отображения вашего приложения |
Если вы уже занимались разработкой внешнего интерфейса H5 или разработкой страниц, например iOS, вы должны быть в состоянии добраться туда.На самом деле, эти компоненты аналогичны компонентам, предоставляемым другими языками разработки, и их свойства аналогичны. сначала взгляните на некоторые общие свойства.
| значение атрибута | Описание недвижимости |
|---|---|
bg |
цвет фона элемента управления |
fg |
цвет шрифта в компоненте |
font |
Установите стиль шрифта и размер текста |
height |
установить контрольную высоту |
width |
Установите ширину элемента управления |
bd |
Установите размер границы элемента управления, по умолчанию 2 пикселя. |
relief |
Установите стиль границы: неровный, утопленный, приподнятый, канавка, ребро, по умолчанию плоский |
text |
установить текстовое содержимое |
anchor |
Прицеливание, управление положением текста, центр по умолчанию (опционально: n север, восток восток, s юг, w запад, центр, ne se, sw, nw) |
justify |
При отображении нескольких строк текста установите выравнивание между разными строками (слева, справа, по центру) |
wraplength |
Ограничьте количество символов, отображаемых в строке элемента управления, в зависимости от ширины |
underline |
Подчеркивание, не по умолчанию; значением является подчеркнутый индекс строки, когда он равен 0, первый символ подчеркивается |
padx |
Заполнение в направлении оси X относится к расстоянию между содержимым элемента управления и краем элемента управления. |
pady |
Заполнение в направлении оси Y |
1. Labelконтролирует
-
LabelЭлемент управления используется для отображения текста и изображений. -
LabelЧасто используется для представления информации, а не для взаимодействия с пользователем. -
LabelВы также можете привязать такие события, как клики, но обычно это не используется.
label = tkinter.Label(window,
text="我是一只小鸭子",
bg='#999999',
fg='white',
font=('黑体', 13),
justify='center',
height=5,
width=30,
anchor='n',
# wraplength=30
underline=3,
bd=3,
relief='flat'
)
#显示出来
label.pack()
эффект отображения
Знакомство с некоторыми свойствами
-
anchor: Отображаемое положение текста в пространстве (сверху на север вниз на юг, слева на запад справа на восток), необязательные значения: (n северо-восток восток s юг w запад центр ne северо-запад se юго-восток sw юго-запад nw северо-восток) направление -
image: отображаемое изображение
2. Buttonконтролирует
-
ButtonУправление является стандартнымTkinterВиджеты для различных кнопок, некоторые действия могут быть запущены при нажатии кнопки мышью -
ButtonМожет отображать текст и изображения - Кнопки могут отображать текст только одним шрифтом, а текст может занимать несколько строк.
# 设置标题
window.title('Titanjun')
# 设置窗口大小
window.geometry('400x400')
# 创建按钮
button1 = tkinter.Button(window,
text='按钮1',
bg='orange',
height=3,
width=20,
bd=3,
relief='sunken',
activebackground='orange',
activeforeground='white',
command=action1
)
button1.pack()
button2 = tkinter.Button(window, text='Titanjun', height=3, command=window.quit())
button2.pack()
# 进入消息循环
window.mainloop()
Стиль эффекта
Знакомство с некоторыми свойствами
-
activebackground: цвет фона кнопки при наведении мыши. -
activeforeground: цвет текста кнопки при наведении мыши. -
highlightcolor: выделение цветом -
image: изображение для отображения на кнопке -
state: Установить состояние компонента кнопки, необязательно (обычное (по умолчанию), активное, отключенное). -
command: Метод привязки кнопки принимает имя функции, обратите внимание на имя функции без кавычек.
3. Entryвходить
элементы управления вводом для отображения простого текстового содержимого иiOSсерединаUITextFieldто же самое, пример следующий
vari = tkinter.Variable()
entry = tkinter.Entry(window, textvariable=vari)
entry.pack()
# 设置值
vari.set('very good')
# 取值
print(vari.get())
print(entry.get())
# 只读输入框
vari2 = tkinter.Variable()
entry2 = tkinter.Entry(window, textvariable=vari2, state='disabled')
entry2.pack()
# 设置值
vari2.set('very bad')
print(vari2.get())
# 密码输入框, 无论输入什么都显示密文
vari3 = tkinter.Variable()
entry3 = tkinter.Entry(window, textvariable=vari3, show='@', bg='red', fg='white')
entry3.pack()
Стиль эффекта
Слушайте изменения в тексте в поле ввода
- Здесь нам нужно установить следующие три параметра
-
validate: Установите состояние прослушивания поля ввода.-
focus:когдаEntryПроверять, когда компонент получает или теряет фокус -
focusin: когдаEntryПроверить, когда компонент получает фокус -
focusout: когдаEntryПроверять, когда компонент теряет фокус -
key: проверить, когда поле ввода редактируется -
all: Подтвердить при возникновении любого из вышеуказанных условий
-
-
validatecommand: принимает функцию, которая оценивает, соответствует ли текст в поле ввода требованиям, функция может возвращать только True или False, чтобы указать результат проверки -
invalidcommand: указанную функцию можно использовать только вvalidatecommandВозвращаемое значениеFalseназывается, когда
# 主窗口
import tkinter
# 验证输入的文字
def varileText():
text = entry4.get()
if text == '1':
print('对喽')
return True
print('错漏')
return False
#
def testInvaild():
print('invaildCommanf被调用')
return True
# 创建主窗口
window = tkinter.Tk()
# 设置标题
window.title('Titanjun')
# 设置窗口大小
window.geometry('400x400')
# 验证输入的内容是否符合要求
vari4 = tkinter.Variable()
entry4 = tkinter.Entry(window, textvariable=vari4, validate='key', validatecommand=varileText, invalidcommand=testInvaild)
entry4.pack()
# 进入消息循环
window.mainloop()
4. Textмногострочный текст
-
TextТекстовые компоненты используются для отображения и обработки многострочного текста. - существует
Tkinterвсех компонентов,TextКомпонент чрезвычайно мощный и гибкий, подходит для многозадачности - при создании
TextВ компоненте нет содержимого. Чтобы вставить в него контент, вы можете использоватьinsert()а такжеINSERTилиENDНомер индекса
4-1. Вставьте текст/элемент управления/изображение
text = Text(window, bg='yellow', width=40, height=10)
#INSERT索引表示在光标处插入
text.insert(INSERT,'I Love')
#END索引号表示在最后插入
text.insert(END,' you')
text.pack()
def show():
print('好了, 你赢了')
# text还可以插入按钮 图片等
b1 = Button(text, text='点我点我', command=show)
# 在text创建组件的命令
text.window_create(INSERT, window=b1)
4-2.Значение индекса
-
Indexes(индекс) используется для указания наTextПоложение текста в компоненте, за которым следуетpythonИндекс последовательности такой же, как,TextИндекс компонента также соответствует положению между фактическими символами - Стоит отметить, что: номера строк начинаются с 1, а номера столбцов начинаются с 0
- Например: 2.4 означает символ в строке 2 и столбце 4.
from tkinter import *
root = Tk()
text1=Text(root,width=30,height=3)
text1.insert(INSERT,'index的练习')
#1.2到1.5的范围之间
print(text1.get(1.2,1.5))
4-3 Теги в тексте
TagsОбычно используется для изменения стиля и функции содержимого в компоненте «Текст». Кроме того, вы можете изменить шрифт, размер и цвет текста.TagsТакже позволяет ассоциировать текст, встроенные компоненты и изображения с клавиатурой, в дополнение кuser-defined tags(Определяемые пользователемTags)
text.insert(INSERT, '自定义标签的名字')
#第一个参数为自定义标签的名字
#第二个参数为设置的起始位置,第三个参数为结束位置
#第四个参数为另一个位置
text.tag_add('tag1', '1.7', '1.12', '1.14')
#用tag_config函数来设置标签的属性(这里不要用简写, 否则报错)
text.tag_config('tag1', font=17, background='blue', foreground='red')
# text.tag_config('tag1', bg='yellow', fg='red')
#新的tag会覆盖旧的tag
4-4.С полосой прокрутки
text = Text(window, bg='yellow', width=100, height=10)
# 添加右侧滚动条
scroll = Scrollbar()
# side放到窗体的那一侧 fill填充
scroll.pack(side=RIGHT, fill=Y)
text.pack(side=RIGHT, fill=Y)
# 两者关联
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set)
str = '''致橡树--舒婷
..........此处省略N个字...........
'''
text.insert(INSERT, str)
Стиль эффекта
5. Кнопка множественного выбора с флажком
-
CheckbuttonМожно представить два состояния:OnиOff, вы можете установить функцию обратного вызова, которая вызывается всякий раз, когда нажимается кнопка - Вот пример: выберите разные флажки, будут отображаться разные тексты.
def update():
message = ''
if tag1.get() == True:
message += 'titan \n'
if tag2.get() == True:
message += 'jun \n'
if tag3.get() == True:
message += 'coder \n'
#清除text中的所有内容
text.delete(0.0, END)
# 插入新的文本内容
text.insert(INSERT, message)
# 要绑定的变量
tag1 = BooleanVar()
check1 = Checkbutton(window, text = 'Titan', variable = tag1, command = update)
check1.pack()
tag2 = BooleanVar()
check2 = Checkbutton(window, text = 'Juned', variable = tag2, command = update)
check2.pack()
tag3 = BooleanVar()
check3 = Checkbutton(window, text = 'Coder', variable = tag3, command = update)
check3.pack()
text = Text(window, bg = 'orange', width = 50, height = 5)
text.pack()
Стиль эффекта
6. Радиокнопка радиокнопка
RadiobuttonЭто радиокнопка, то есть в одной группе может быть выбрана только одна кнопка. Всякий раз, когда выбрана кнопка в группе, другие кнопки автоматически изменяются в невыбранное состояние. Отличие от других элементов управления заключается в том, что он имеет концепцию группы.
def selectorAction():
print(tag.get())
# 一组单选框要绑定同一个变量
tag = IntVar()
radio1 = Radiobutton(window, text = 'one', value = 23, variable = tag, command = selectorAction)
radio1.pack()
radio2 = Radiobutton(window, text = 'two', value = 32, variable = tag, command = selectorAction)
radio2.pack()
radio3 = Radiobutton(window, text = 'ten', value = 10, variable = tag, command = selectorAction)
radio3.pack()
Стиль эффекта
Продолжение следует, введение других элементов управления будет обновляться на более позднем этапе .......