Я хотел впервые попробовать использовать tkinter, и у меня была небольшая программа, которую я хотел попробовать.
Ей нужен был текст в «таблице», а из-за количества строк и столбцов мне нужны были полосы прокрутки для вертикальной и горизонтальной прокрутки.
Я взял два примера из https://pythonguides.com/python-tkinter-scrollbar/ и попытался объединить их, чтобы эффективно получить первый пример, с дополнительными столбцы и горизонтальную полосу прокрутки.
Все работает отлично, за исключением того, что горизонтальная полоса прокрутки не проходит по всей нижней части холста, а фиксируется в правом нижнем углу.
Я не могу понять, что я сделал не так, но буду очень признателен за любые рекомендации.
#!/usr/bin/python3
import tkinter as tk
root = tk.Tk()
root.title("Customer Data")
# Create a canvas and scrollbar
canvas = tk.Canvas(root)
vertScrollbar = tk.Scrollbar(root, orient=tk.VERTICAL, command=canvas.yview)
horzScrollbar = tk.Scrollbar(root, orient=tk.HORIZONTAL, command=canvas.xview)
# canvas.configure(yscrollcommand=vertScrollbar.set, xscrollcommand=horzScrollbar.set)
#############
canvas.config(
xscrollcommand=horzScrollbar.set,
yscrollcommand=vertScrollbar.set
)
#############
# Create a frame inside the canvas
frame = tk.Frame(canvas)
canvas.create_window((0, 0), window=frame, anchor='nw')
# Add table headers
headers = ['Name', 'Email', 'Phone', 'Location', 'Animal']
for col, header in enumerate(headers):
tk.Label(frame, text=header, font=('Arial', 12, 'bold')).grid(row=0, column=col, padx=10, pady=5)
# Add customer data to the table
customers = [
('John Doe' , 'john@example.com', '(123) 456-7890', 'Williamstown, Washington', 'Elephant'),
('Jane Smith', 'jane@example.com', '(987) 654-3210', 'Williamstown, Washington', 'Elephant'),
('Jane Smith', 'jane@example.com', '(987) 654-3211', 'Williamstown, Washington', 'Elephant'),
('Jane Smith', 'jane@example.com', '(987) 654-3212', 'Williamstown, Washington', 'Elephant'),
('Jane Smith', 'jane@example.com', '(987) 654-3213', 'Williamstown, Washington', 'Elephant'),
# Add more customer data here
]
for row, customer in enumerate(customers, start=1):
for col, item in enumerate(customer):
tk.Label(frame, text=item).grid(row=row, column=col, padx=10, pady=5)
# Update the scroll region
frame.update_idletasks()
canvas.configure(scrollregion=canvas.bbox('all'))
canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
vertScrollbar.pack(side=tk.RIGHT, fill=tk.Y)
horzScrollbar.pack(side=tk.BOTTOM, fill=tk.X)
root.mainloop()
Подробнее здесь: https://stackoverflow.com/questions/798 ... st-working
Горизонтальные и вертикальные полосы прокрутки с использованием TKinter и Python почти работают ⇐ Python
Программы на Python
1763298648
Anonymous
Я хотел впервые попробовать использовать tkinter, и у меня была небольшая программа, которую я хотел попробовать.
Ей нужен был текст в «таблице», а из-за количества строк и столбцов мне нужны были полосы прокрутки для вертикальной и горизонтальной прокрутки.
Я взял два примера из https://pythonguides.com/python-tkinter-scrollbar/ и попытался объединить их, чтобы эффективно получить первый пример, с дополнительными столбцы и горизонтальную полосу прокрутки.
Все работает отлично, за исключением того, что горизонтальная полоса прокрутки не проходит по всей нижней части холста, а фиксируется в правом нижнем углу.
Я не могу понять, что я сделал не так, но буду очень признателен за любые рекомендации.
#!/usr/bin/python3
import tkinter as tk
root = tk.Tk()
root.title("Customer Data")
# Create a canvas and scrollbar
canvas = tk.Canvas(root)
vertScrollbar = tk.Scrollbar(root, orient=tk.VERTICAL, command=canvas.yview)
horzScrollbar = tk.Scrollbar(root, orient=tk.HORIZONTAL, command=canvas.xview)
# canvas.configure(yscrollcommand=vertScrollbar.set, xscrollcommand=horzScrollbar.set)
#############
canvas.config(
xscrollcommand=horzScrollbar.set,
yscrollcommand=vertScrollbar.set
)
#############
# Create a frame inside the canvas
frame = tk.Frame(canvas)
canvas.create_window((0, 0), window=frame, anchor='nw')
# Add table headers
headers = ['Name', 'Email', 'Phone', 'Location', 'Animal']
for col, header in enumerate(headers):
tk.Label(frame, text=header, font=('Arial', 12, 'bold')).grid(row=0, column=col, padx=10, pady=5)
# Add customer data to the table
customers = [
('John Doe' , 'john@example.com', '(123) 456-7890', 'Williamstown, Washington', 'Elephant'),
('Jane Smith', 'jane@example.com', '(987) 654-3210', 'Williamstown, Washington', 'Elephant'),
('Jane Smith', 'jane@example.com', '(987) 654-3211', 'Williamstown, Washington', 'Elephant'),
('Jane Smith', 'jane@example.com', '(987) 654-3212', 'Williamstown, Washington', 'Elephant'),
('Jane Smith', 'jane@example.com', '(987) 654-3213', 'Williamstown, Washington', 'Elephant'),
# Add more customer data here
]
for row, customer in enumerate(customers, start=1):
for col, item in enumerate(customer):
tk.Label(frame, text=item).grid(row=row, column=col, padx=10, pady=5)
# Update the scroll region
frame.update_idletasks()
canvas.configure(scrollregion=canvas.bbox('all'))
canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
vertScrollbar.pack(side=tk.RIGHT, fill=tk.Y)
horzScrollbar.pack(side=tk.BOTTOM, fill=tk.X)
root.mainloop()
Подробнее здесь: [url]https://stackoverflow.com/questions/79821480/horizontal-and-vertical-scrollbars-using-tkinter-and-python-almost-working[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия