Я пытаюсь создать простое приложение на Python с помощью tkinter. Оно содержит две строки для выбора файла (столбец меток в фрейме 1, labelFrame и столбец пар записей и кнопок во втором фрейме, addressFrame), а также две кнопки в правом нижнем углу, которые для целей этой статьи являются просто заполнителями, которые я сохранил для полного макета.
Окно выглядит следующим образом: Главное представление. Проблема возникает, когда я пытаюсь изменить его размер. Я хочу, чтобы его по-прежнему можно было свернуть следующим образом: Свернутое представление, но когда я его растягиваю, между labelFrame и addressFrame создается много пустого пространства, чего я не хочу: Максимизированное представление
Я хочу, чтобы labelFrame сокращался вместе с addressFrame, когда я сворачиваю окно, но при расширении я хочу, чтобы его размер изменялся только до определенной ширины (длина самой длинной метки + несколько пикселей), в то время как addressFrame (в основном просто адрес файла в записи) продолжает расширяться. Кажется, у меня может быть только одно или другое: либо ширина labelFrame полностью фиксирована и не сворачивается до тех пор, пока addressFrame не исчезнет из поля зрения при перемещении мэйнфрейма, либо его растяжение создаст дополнительное пространство.
Пожалуйста, помогите.
Вот код:
from tkinter import * # from tkinter import Tk for Python 3.x
from tkinter import ttk
from tkinter import filedialog
def validateInputs(): #placeholder
return True
def calculate(): #placeholder
return True
class FileSelect(Frame):
def __init__(self,parent=None,**kw):
Frame.__init__(self,master=parent,**kw)
self.filePath = StringVar()
self.entPath = Entry(self, width=50, textvariable=self.filePath)
self.entPath.grid(row=0,column=0,sticky='nsew')
self.btnFind = ttk.Button(self, text="...",command=self.setFolderPath)
self.btnFind.grid(row=0,column=1,sticky='e')
def setFolderPath(self):
file_selected = filedialog.askopenfilename() # show an "Open" dialog box and return the path to the selected file
self.filePath.set(file_selected)
@property
def file_path(self):
return self.filePath.get()
class labelFrame(ttk.Frame):
def __init__(self, container):
super().__init__(container)
# setup the grid layout manager
self.columnconfigure(0, weight=1)
self.__create_widgets()
def __create_widgets(self):
ttk.Label(self, text='Choose file 1 with the main data:').grid(column=0, row=0, sticky='ew')
ttk.Label(self, text='Choose file 2 for verification:').grid(column=0, row=1, sticky='ew')
for widget in self.winfo_children():
widget.grid(padx=0, pady=5)
class addressFrame(ttk.Frame):
def __init__(self, container):
super().__init__(container)
# setup the grid layout manager
self.columnconfigure(0, weight=3)
self.__create_widgets()
def __create_widgets(self):
file1 = FileSelect(self)
file1.grid(row=0, sticky='nsew')
file1.columnconfigure(0, weight=3)
file2 = FileSelect(self)
file2.grid(row=1, sticky='nsew')
file2.columnconfigure(0, weight=3)
for widget in self.winfo_children():
widget.grid(padx=0, pady=3)
#main module
gui = Tk()
gui.title("TEST")
gui.columnconfigure(0, weight=1)
gui.rowconfigure(0, weight=1)
gui.minsize(400, 100)
mainframe = ttk.Frame(gui, height=600, padding=(3, 3, 12, 12))
mainframe.grid(column=0, row=0, sticky='nsew')
mainframe.columnconfigure(0, weight=1)
mainframe.columnconfigure(1, weight=1)
# create the label frame
label_frame = labelFrame(mainframe)
label_frame.grid(column=0, row=0, sticky='nswe')
label_frame.columnconfigure(0, weight=1)
# create the frame w file address entry and button
address_frame = addressFrame(mainframe)
address_frame.grid(column=1, row=0, sticky='nswe')
address_frame.columnconfigure(0, weight=3)
valBtn = ttk.Button(mainframe, text="Validate inputs", command = validateInputs)
valBtn.grid(column=3, row=2, padx=5, pady=5, sticky='e')
valBtn.state(['disabled'])
btn = ttk.Button(mainframe, text="(Re)calculate", command = calculate)
btn.grid(column=3, row=3, padx=5, pady=5, sticky='e')
btn.state(['disabled'])
for child in mainframe.winfo_children():
child.grid_configure(padx=5, pady=5)
gui.mainloop()
Подробнее здесь: https://stackoverflow.com/questions/798 ... aximazed-o
Ограничьте изменение размера фрейма в Tkinter, чтобы его можно было свернуть, но максимизировать только до определенной ⇐ Python
Программы на Python
1768542515
Anonymous
Я пытаюсь создать простое приложение на Python с помощью tkinter. Оно содержит две строки для выбора файла (столбец меток в фрейме 1, labelFrame и столбец пар записей и кнопок во втором фрейме, addressFrame), а также две кнопки в правом нижнем углу, которые для целей этой статьи являются просто заполнителями, которые я сохранил для полного макета.
Окно выглядит следующим образом: Главное представление. Проблема возникает, когда я пытаюсь изменить его размер. Я хочу, чтобы его по-прежнему можно было свернуть следующим образом: Свернутое представление, но когда я его растягиваю, между labelFrame и addressFrame создается много пустого пространства, чего я не хочу: Максимизированное представление
Я хочу, чтобы labelFrame сокращался вместе с addressFrame, когда я сворачиваю окно, но при расширении я хочу, чтобы его размер изменялся только до определенной ширины (длина самой длинной метки + несколько пикселей), в то время как addressFrame (в основном просто адрес файла в записи) продолжает расширяться. Кажется, у меня может быть только одно или другое: либо ширина labelFrame полностью фиксирована и не сворачивается до тех пор, пока addressFrame не исчезнет из поля зрения при перемещении мэйнфрейма, либо его растяжение создаст дополнительное пространство.
Пожалуйста, помогите.
Вот код:
from tkinter import * # from tkinter import Tk for Python 3.x
from tkinter import ttk
from tkinter import filedialog
def validateInputs(): #placeholder
return True
def calculate(): #placeholder
return True
class FileSelect(Frame):
def __init__(self,parent=None,**kw):
Frame.__init__(self,master=parent,**kw)
self.filePath = StringVar()
self.entPath = Entry(self, width=50, textvariable=self.filePath)
self.entPath.grid(row=0,column=0,sticky='nsew')
self.btnFind = ttk.Button(self, text="...",command=self.setFolderPath)
self.btnFind.grid(row=0,column=1,sticky='e')
def setFolderPath(self):
file_selected = filedialog.askopenfilename() # show an "Open" dialog box and return the path to the selected file
self.filePath.set(file_selected)
@property
def file_path(self):
return self.filePath.get()
class labelFrame(ttk.Frame):
def __init__(self, container):
super().__init__(container)
# setup the grid layout manager
self.columnconfigure(0, weight=1)
self.__create_widgets()
def __create_widgets(self):
ttk.Label(self, text='Choose file 1 with the main data:').grid(column=0, row=0, sticky='ew')
ttk.Label(self, text='Choose file 2 for verification:').grid(column=0, row=1, sticky='ew')
for widget in self.winfo_children():
widget.grid(padx=0, pady=5)
class addressFrame(ttk.Frame):
def __init__(self, container):
super().__init__(container)
# setup the grid layout manager
self.columnconfigure(0, weight=3)
self.__create_widgets()
def __create_widgets(self):
file1 = FileSelect(self)
file1.grid(row=0, sticky='nsew')
file1.columnconfigure(0, weight=3)
file2 = FileSelect(self)
file2.grid(row=1, sticky='nsew')
file2.columnconfigure(0, weight=3)
for widget in self.winfo_children():
widget.grid(padx=0, pady=3)
#main module
gui = Tk()
gui.title("TEST")
gui.columnconfigure(0, weight=1)
gui.rowconfigure(0, weight=1)
gui.minsize(400, 100)
mainframe = ttk.Frame(gui, height=600, padding=(3, 3, 12, 12))
mainframe.grid(column=0, row=0, sticky='nsew')
mainframe.columnconfigure(0, weight=1)
mainframe.columnconfigure(1, weight=1)
# create the label frame
label_frame = labelFrame(mainframe)
label_frame.grid(column=0, row=0, sticky='nswe')
label_frame.columnconfigure(0, weight=1)
# create the frame w file address entry and button
address_frame = addressFrame(mainframe)
address_frame.grid(column=1, row=0, sticky='nswe')
address_frame.columnconfigure(0, weight=3)
valBtn = ttk.Button(mainframe, text="Validate inputs", command = validateInputs)
valBtn.grid(column=3, row=2, padx=5, pady=5, sticky='e')
valBtn.state(['disabled'])
btn = ttk.Button(mainframe, text="(Re)calculate", command = calculate)
btn.grid(column=3, row=3, padx=5, pady=5, sticky='e')
btn.state(['disabled'])
for child in mainframe.winfo_children():
child.grid_configure(padx=5, pady=5)
gui.mainloop()
Подробнее здесь: [url]https://stackoverflow.com/questions/79869050/restrict-frame-resizing-in-tkinter-so-it-can-still-be-minimized-but-maximazed-o[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия