Как отображать метки в чередующемся левом и правом положении? - PullRequest
0 голосов
/ 18 октября 2019

У меня есть список меню для отображения в окне tkinter, но как мне отобразить меню таким образом, чтобы оно отображалось слева, справа, затем переходило к следующему ряду, затем налево, затем снова вправо.

Сейчас я использую метод place, чтобы увеличить ось y, чтобы она уменьшалась на 50 для каждой метки. Но понятия не имею, что делать с осью х, чтобы она пошла вправо.

from tkinter import *
root = Tk()
root.geometry("800x500")

mac_meal = {"McChicken": "$7.50", ..... }

i = 100
for key in mac_meal:
  meal = key
  Label(root, text=meal, font=("times", 12, "bold"), width=20).place(x=50,y=i)
  i += 50

Результат уменьшается на 50 по оси у, но чередование влево и вправо для меня невозможно. Например:

McChicken (1st in the dictionary)              McSpicy (2nd in the dictionary)
CheeseBurger (3rd....)                         Nugget (4th..)

Кроме того, возможно ли в этом меню иметь полосу прокрутки, чтобы она могла прокручиваться при превышении геометрии окна?

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 19 октября 2019

Я использовал следующий код для решения своей проблемы, но думал, есть ли более короткий путь.

from tkinter import *

root = Tk()
root.geometry("800x500")

mac_meal = {"McChicken":"$2.70", "McSpicy": "$2.70","CheeseBurger": "$2.80","Nugget": "$2","Coke":"$1","McFlurry":"$2"}

y = 50
i = 0
for key in mac_meal:
    x = 50
    meal = key
    if i % 2 == 1:
        x += 400    # If it is odd number, the label will be place at the right with the same y-axis
        Label(root, text=meal, font=("times", 12, "bold"), width=20).place(x=x, y=y)
    else:
        y += 50     # If it is even number, the label will be place +50 pixels below.
        Label(root, text=meal, font=("times", 12, "bold"), width=20).place(x=x, y=y)
    i += 1
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...