Использование Tkinter в программировании на Python 01

Python программист открытый источник iOS

Snip20180620_1.png

  • Оригинальный адрес ссылки на блог
  • 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. Главное окно

  • существуетiOSКаждыйAPPиметь главное окноwindow, ДолженwindowЭто самый простой вид из всех видов подземелья рта.View
  • существуетPythonУ китайских детских стишков также будет главное окно, смотрите нижеtkinterКак создать главное окно
# 主窗口
import tkinter

# 创建主窗口
window = tkinter.Tk()

# 设置标题
window.title('Titanjun')

# 设置窗口大小
window.geometry('400x400')

# 进入消息循环
window.mainloop()

Эффект следующий

Snip20180620_5.png

Главное окно имеет следующий метод, кроме вышеуказанного метода

# 框体大小的可调性, 分别表示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()

эффект отображения

Label效果.png

Знакомство с некоторыми свойствами

  • 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()

Стиль эффекта

Python按钮.png

Знакомство с некоторыми свойствами

  • 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()

Стиль эффекта

Python输入框.png

Слушайте изменения в тексте в поле ввода

  • Здесь нам нужно установить следующие три параметра
  • 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)

Стиль эффекта

滚动Text.png

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()

Стиль эффекта

puthon复选框.png

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()

Стиль эффекта

python单选框.png

Продолжение следует, введение других элементов управления будет обновляться на более позднем этапе .......