В этом руководстве по Python мы узнаем, как использовать виджет Python Tkinter Separator.
Синтаксис:
Ниже приведен синтаксис для создания разделителя в Python Tkinter . Хотя мы упомянули все доступные параметры, единственным обязательным параметром, необходимым для создания разделителя в Python Tkinter, является единственный master.
ttk.Separator( master=ws, orient=HORIZONTAL, style='TSeparator', class_= ttk.Separator, takefocus= 1, cursor='plus' ).pack(fill=X, padx=10, expand=True)
Описание параметров: –
- master: имя окна, в котором вы хотите разместить виджет. Это может быть родительское или дочернее окно.
- ориентировать: [ГОРИЗОНТАЛЬНО | ВЕРТИКАЛЬНО] обязательно отрегулируйте значение параметра заливки в диспетчере геометрии соответствующим образом. мы установили fill=X , потому что ориентация горизонтальная.
- стиль: вы можете настроить цвет фона виджета-разделителя, используя стиль. Стиль по умолчанию — TSeparator.
- class_: вы можете указать имя класса, свойство которого вы хотите наследовать в программе. имя виджета является именем класса по умолчанию.
- сфокусировать: [0 | 1 ] если для параметра takefocus установлено значение 0, то виджет-разделитель не получит фокус, и наоборот.
- курсор: значок курсора мыши меняется каждый раз, когда он наводится на виджет-разделитель. (
- master: имя окна, в котором вы хотите разместить виджет. Это может быть родительское или дочернее окно.
- ориентировать: [ГОРИЗОНТАЛЬНО | ВЕРТИКАЛЬНО] обязательно отрегулируйте значение параметра заливки в диспетчере геометрии соответствующим образом. мы установили fill=X , потому что ориентация горизонтальная.
- стиль: вы можете настроить цвет фона виджета-разделителя, используя стиль. Стиль по умолчанию — TSeparator .
- class_ : вы можете указать имя класса, свойство которого вы хотите наследовать в программе. имя виджета является именем класса по умолчанию.
- сфокусировать: [0 | 1 ] если для параметра takefocus установлено значение 0, то виджет-разделитель не получит фокус, и наоборот.
- курсор: значок курсора мыши меняется каждый раз, когда он наводится на виджет-разделитель. (стрелка, круг, часы, крест, точка, обмен, флер, сердце, человек, мышь, пират, плюс, шаттл, размер, паук, баллончик, звезда, цель, tcross, поход, часы).
Пример:-
В приведенном ниже примере мы создали два разделителя (горизонтальный и вертикальный).
# modules from tkinter import ttk from tkinter import * # instance of object ws = Tk() ws.title('PythonGuides') ws.geometry('400x400') # create styling styl = ttk.Style() styl.configure('TSeparator', background='grey') # horizontal separator ttk.Separator( master=ws, orient=HORIZONTAL, style='TSeparator', class_= ttk.Separator, takefocus= 1, cursor='plus' ).pack(fill=X, padx=10, expand=True) # vertical separator ttk.Separator( master=ws, orient=VERTICAL, style='TSeparator', class_= ttk.Separator, takefocus= 1, cursor='man' ).pack(fill=Y, pady=10, expand=True) # infinite loop ws.mainloop()
В приведенном ниже выводе вы можете видеть, что горизонтальные и вертикальные разделители создаются с помощью Python Tkinter.
Разделительная сетка Python Tkinter
Grid — это менеджер геометрии, который размещает виджеты в формате строк и столбцов. Это позволяет организовать виджеты приложений в табличном формате.
Прежде чем мы перейдем к тому, как создать разделитель в Python Tkinter, давайте пересмотрим основные понятия сетки в Python Tkinter:
- Строки — это горизонтальная сетка (сетки), а столбцы — вертикальная сетка (сетки).
- columnspan и rowspan в сетке позволяют объединить два или более столбцов и строк, но эти столбцы должны быть созданы или заняты. Если вы создали сетку до 5 строк или столбцов и пытаетесь объединить больше, чем это, то она займет только 5 строк или столбцов.
- Sticky позволяет растягивать сетку в любом направлении.
- padx и pady создают пространство вне виджета.
- ipadx и ipady создали пространство внутри виджета.
Используя опцию ipadx или ipady в диспетчере геометрии сетки, мы можем разделить виджет в Python Tkinter. ipadx будет использоваться для горизонтального разделителя, тогда как pady будет использоваться для вертикального разделителя.
Пример:-
В приведенном ниже примере мы продемонстрировали, как создать виджет Python Tkinter Separator с помощью диспетчера геометрии сетки. Мы также отобразили различные варианты, которые мы пробовали, но не работали в качестве комментариев.
# modules from tkinter import ttk from tkinter import * # create window ws = Tk() ws.title('PythonGuides') ws.geometry('400x400') # style styl = ttk.Style() styl.configure('blue.TSeparator', background='blue') styl.configure('red.TSeparator', background='red') # horizontal separator ttk.Separator( master=ws, orient=HORIZONTAL, style='blue.TSeparator', class_= ttk.Separator, takefocus= 1, cursor='plus' ).grid(row=0, column=1, ipadx=200, pady=10) # ways that didn't worked #).grid(row=1,column=0,columnspan=4, sticky="ew", padx=10, pady=10) #).grid(row=0, columnspan=5, sticky=EW) #).pack(fill=X, padx=10, expand=True) # vertical separator ttk.Separator( master=ws, orient=VERTICAL, style='red.TSeparator', class_= ttk.Separator, takefocus= 1, cursor='man' ).grid(row=1, column=1, ipady=200, padx=10, pady=10) # infinite loop ws.mainloop()
Вот вывод приведенного выше кода, здесь синяя линия представляет собой горизонтальный разделитель, а красная линия представляет собой вертикальный разделитель.
Пример строки-разделителя Python Tkinter
В этом разделе мы создадим проект с виджетом-разделителем в Python Tkinter. Мы создали формы регистрации и входа в одном окне, и обе эти вещи разделены с помощью разделителя Python Tkinter.
from tkinter import * from tkinter import ttk ws = Tk() ws.geometry('700x400') ws.title('PythonGuides') f = ('Helvetica', 14) Label( ws, text='Full name', font=f ).place(x=10, y=10) Entry(ws, font=f).place(x=100, y=10) Label( ws, text='Email', font=f ).place(x=10, y=40) Entry(ws, font=f).place(x=100, y=40) Label( ws, text='Mobile', font=f ).place(x=10, y=70) Entry(ws, font=f).place(x=100, y=70) genwin = LabelFrame( ws, text='Date of birth', font=f ) genwin.place(x=10, y=100) Radiobutton( genwin, text='Male', value=1, font=f ).pack(side=LEFT) Radiobutton( genwin, text='Female', value=2, font=f ).pack(side=LEFT) Radiobutton( genwin, text='Others', value=3, font=f ).pack(side=LEFT) dobwin = LabelFrame( ws, text='Gender', font=f ) dobwin.place(x=10, y=170) ttk.Combobox( dobwin, values=['01', '02', '03', '04', '05', '06' ], width=5, font=f ).pack(side=LEFT) ttk.Combobox( dobwin, values=['Janaury', 'February', 'March', 'April', 'May', 'June' ], width=7, font=f ).pack(side=LEFT) ttk.Combobox( dobwin, values=['1995', '1996', '1997', '1998', '1999', '2000' ], width=5, font=f ).pack(side=LEFT) Checkbutton( ws, text= 'Accept Terms & Conditions', ).place(x=10, y=240) Button( ws, text='Submit', command=None, font=f, width=10 ).place(x=10, y=270) Button( ws, text='Clear', command=None, font=f, width=10 ).place(x=150, y=270) ttk.Separator( ws, takefocus=0, orient=VERTICAL ).place(x=350, y=0, relheight=1) logwin = LabelFrame( ws, text='Login', font=f, padx=10, pady=10 ) logwin.place(x=360, y=10) Label( logwin, text='Email', font=f, pady=10 ).grid(row=0, column=0, sticky='w') Entry( logwin, font=f, width=15 ).grid(row=0, column=1) Label( logwin, text='Password', font=f ).grid(row=1, column=0) Entry( logwin, font=f, width=15 ).grid(row=1, column=1) Button( logwin, text='Submit', command=None, font=f ).grid(row=2, column=1, sticky=EW, pady=10) ws.mainloop()
В приведенном ниже выводе мы использовали виджет-разделитель для организации разделов регистрации и входа.
Цвет разделителя Python Tkinter
Python Tkinter Separator предоставляет стиль параметров , с помощью которого мы можем изменить цвет линии разделителя.
Имя стиля виджета-разделителя по умолчанию — TSeparator, но вы можете создать свое собственное имя, добавив новое имя, за которым следует точка (.) И старое имя, которое TSeparator в Python Tkinter.
И позже это новое имя можно использовать для добавления стиля виджету Python Tkinter Separator. Вот пример создания нового имени:
styl = ttk.Style() styl.configure('blue.TSeparator', background='blue')
В приведенном выше сценарии blue.TSeperator — это созданное имя, а цвет фона назначается синим. Теперь давайте посмотрим, как мы можем использовать этот стиль в нашей программе.
ttk.Separator( ws, orient=HORIZONTAL, style='blue.TSeparator' ).pack()
Вы можете создать несколько стилей и использовать их по мере необходимости в программе. Вот пример, демонстрирующий использование нескольких цветов в разделителе Python Tkinter.
Исходный код:
В этом коде мы создали несколько стилей с разными цветами фона для разделителя Python Tkinter. изменение имени стиля изменит цвет разделителя.
from tkinter import * from tkinter import ttk ws = Tk() ws.title('PythonGuides') ws.geometry('300x200+800+200') # Здесь созданные стили styl = ttk.Style() styl.configure('blue.TSeparator', background='blue') styl.configure('red.TSeparator', background='red') styl.configure('green.TSeparator', background='green') styl.configure('yellow.TSeparator', background='yellow') ttk.Separator( ws, orient=HORIZONTAL, style='red.TSeparator' # Здесь можете вставить свой стиль ).pack(fill=X, expand=True) ws.mainloop()
В приведенном ниже выводе мы продемонстрировали цвет разделителя Python Tkinter. Цвет меняется каждый раз при изменении типа стиля в Python Tkinter.
Ширина разделителя Python Tkinter
Виджет-разделитель в Python Tkinter не предоставляет возможности изменить свою ширину, но предоставляет параметр class_. Это означает, что вы можете создать класс с помощью, а затем указать его имя здесь.
В вашем настроенном классе вы можете выполнять другие действия, а также назначать высоту, ширину, границу и т. Д. Разделителю.
Мы рассматриваем этот метод как обходной путь, и чтобы получить помощь по этому поводу, вы можете обратиться к следующей веб-странице .
В приведенном ниже коде разделитель отображается, однако его длина не требуется. Разделитель должен идти от текущего места (нижняя часть коричневого заголовка и идти к нижней части пространства до коричневого нижнего колонтитула на изображении. Как видно при запуске кода, он проходит только от коричневого заголовка до немного больше затем наполовину вниз.
Есть ли способ изменить размер длины и поместить ее в правильное положение?
Ответ:
import tkinter as tk import Pmw class Separator(Pmw.MegaWidget): def __init__(self, parent=None, **kw): # Define the options for the megawidget def __createSeparator(self): self.__separator = self.createcomponent('separator',(), None, Frame,(self._hull,), relief=SUNKEN, bd=2, height=2) self.__separator.pack(fill=X, expand=YES) if __name__ == '__main__': Separator()
Меню Python Tkinter Добавить разделитель
Строка меню в Python Tkinter используется для отображения строки меню в окне Tkinter. Добавление разделителя к пунктам меню показывает группировку похожих пунктов.
Обратите внимание, что этот разделитель отличается от разделителя, который мы обсуждали во всем блоге. Этот раздел должен дать разрешение на раздел, который используется только в строке меню между пунктами меню.
На изображении ниже показан пример строки меню в Python Tkinter и использование разделителя в популярном приложении «Блокнот».
Разделители можно добавить в строку меню с помощью метода add_separator() .
Исходный код:
# modules from tkinter import * # create window ws =Tk() ws.title("Python Guides") ws.geometry("300x200") # create menu menubar = Menu(ws) # use menu file = Menu(menubar) # add menu items file.add_command(label='New') file.add_command(label='New Window') file.add_command(label='Open...') file.add_command(label='Save') file.add_command(label='Save As...') # add Separator file.add_separator() file.add_command(label='Print Setup...') file.add_command(label='Print...') # add separator file.add_separator() file.add_command(label='Exit') file.add_command(label="Exit", command=ws.quit) menubar.add_cascade(label="File", menu=file) # add menu on the screen ws.config(menu=menubar) # infinite loop ws.mainloop()
В приведенном ниже исходном коде мы создали строку меню и добавили разделитель перед пунктами меню настройки печати и после печати.
Разделитель кадров Python Tkinter
Фреймы — это виджеты-контейнеры, которые используются для хранения других виджетов поверх них. Разделители и фреймы имеют одну общую черту: они оба используются для организации других виджетов в окне.
Поскольку у нас есть разделитель в Python Tkinter, не рекомендуется использовать фрейм для разделения в приложении Tkinter. Но раз просят, мы покажем вам, как это можно сделать.
Решение — это просто обходной путь, позволяющий сделать фрейм похожим на виджет-разделитель в Python Tkinter.
Исходный код:
from tkinter import * from tkinter import ttk ws =Tk() ws.title('PythonGuides') ws.geometry('400x300') frame = Frame( ws, bg='orange', ) frame.pack(fill=X, expand=True) frame2 = Frame( ws, bg='green', ) frame2.pack(fill=Y, expand=True) ws.mainloop()
В приведенном ниже исходном коде мы создали два фрейма, которые выглядят идентично виджету-разделителю в Python Tkinter. Оранжевая линия — это горизонтальная линия, а зеленая — вертикальная линия, созданная с помощью виджета фрейма в Python Tkinter.
Разделители можно выравнивать по горизонтали и по вертикали на окне. Положение по умолчанию — горизонтальное. В этом разделе мы узнаем, как создать вертикальный разделитель в Python Tkinter.
Вертикальные разделители можно создать, указав значение ориентации для VERTICAL. Все слова должны быть в верхнем регистре. Если вы хотите использовать строчные буквы, поместите их в кавычки («вертикальные»).
При применении диспетчера геометрии обязательно примените следующие настройки для различных менеджеров геометрии (упаковка, сетка и место) в Python Tkinter:
- Pack( fill=Y, expand=True ) : – это растянет разделитель в вертикальном направлении.
- Сетка ( ipady=100 ): – ipady создает пространство внутри виджета по вертикали.
- Place( relheight=1 ) :- Относительная высота растянет разделитель в вертикальном положении.
Пример:
# modules from tkinter import * from tkinter import ttk # create window ws = Tk() ws.title('PythonGuides') ws.geometry('400x200') # frames to store separators with different geometry managers frame1 = Frame(ws) frame1.pack(side=LEFT, expand=True, fill=BOTH) frame2 = Frame(ws) frame2.pack(side=LEFT, expand=True, fill=BOTH) frame3 = Frame(ws) frame3.pack(side=LEFT, expand=True, fill=BOTH) # style to add colors on separators styl = ttk.Style() styl.configure('red.TSeparator', background='red') styl.configure('blue.TSeparator', background='blue') styl.configure('yellow.TSeparator', background='yellow') # vertical separator with pack geometry manager ttk.Separator( frame1, orient=VERTICAL, style='blue.TSeparator' ).pack(fill=Y, expand=True) # vertical separator with grid geometry manager ttk.Separator( frame2, orient=VERTICAL, style='red.TSeparator' ).grid(row=0, column=0, ipady=200) # vertical separator with place geometry manager ttk.Separator( frame3, orient=VERTICAL, style='yellow.TSeparator' ).place(x=10, y=0, relheight=1) # infinite loop ws.mainloop()
В приведенном ниже примере мы продемонстрировали, как создать вертикальный разделитель, используя все менеджеры геометрии. Поскольку мы не можем использовать все менеджеры геометрии в одном окне, мы использовали рамку виджета-контейнера.