de-vraag
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 marw
marw
Вопрос

Укажите относительную ширину двух встроенных «записей» в виде «текстового» виджета

У меня проблема с заданием размера виджета ввода в Linux и Windows. Эти записи были созданы в Linux:

http://i56.tinypic.com/2edaaeg.png

В Linux они отлично смотрятся в виджетах «Текст». Есть 2 ячейки ввода один за другим, созданные с помощью этой строки кода:

tk.Entry (master, width = 16)

Ширина указана как 16 символов.

Однако в Windows ячейки занимают только половину пространства, и я должен указать ширину 22, так как размер шрифта в Windows меньше.

Мой вопрос: есть ли способ указать относительную ширину этих двух ячеек в виджетах Text, поэтому каждая ячейка занимает 1/2 родительского виджета?

1 2011-10-27T18:05:02+00:00 1
 Glorfindel
Glorfindel
Редактировал вопрос 14-го августа 2019 в 1:53
Программирование
text
tkinter
width
tkinter-entry
Bryan Oakley
27-го октября 2011 в 7:09
2011-10-27T19:09:33+00:00
Дополнительно
Источник
Редактировать
#56791276

Within a text widget? No, there is no direct support for relative widths. within a frame? yes. If you are putting them in a text widget (I presume, so you can scroll them) you have to manage the widths yourself. You can add a binding to the event of the text widget. This fires when the text widget changes size, and you can resize all the widgets at that point.

Проще всего положить их в фрейм с помощью grid , а затем поместить рамку в холст, чтобы вы могли ее прокручивать.

Вот пример:

import Tkinter as tk

class SampleApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.canvas = tk.Canvas(self, width=200, highlightthickness=0)
        self.vsb = tk.Scrollbar(orient="vertical", command=self.canvas.yview)
        self.canvas.configure(yscrollcommand=self.vsb.set)
        self.vsb.pack(side="right", fill="y")
        self.canvas.pack(side="left", fill="both", expand=True)

        self.container = tk.Frame(self.canvas, borderwidth=0, highlightthickness=0)
        self.container.grid_columnconfigure(0, weight=1)
        self.container.grid_columnconfigure(1, weight=1)
        for i in range(30):
            e1 = tk.Entry(self.container)
            e2 = tk.Entry(self.container)
            e1.grid(row=i, column=0,sticky="ew")
            e2.grid(row=i, column=1,sticky="ew")
            e1.insert(0, "find %s" % i)
            e2.insert(0, "replace %s" % i)

        self.canvas.create_window((0,0), anchor="nw", window=self.container, tags="container")
        self.canvas.configure(scrollregion=self.canvas.bbox("all"))
        self.canvas.bind("", self.OnCanvasConfigure)

    def OnCanvasConfigure(self, event):
        self.canvas.itemconfigure("container", width=event.width)
        self.canvas.configure(scrollregion=self.canvas.bbox("all"))

if __name__ == "__main__":
    app = SampleApp()
    app.mainloop()
1
0
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Roxana Elizabeth CASTILLO Avalos
Зарегистрирован 4 дня назад
2
Hideo Nakagawa
Зарегистрирован 5 дней назад
3
Sergiy Tytarenko
Зарегистрирован 1 неделю назад
4
shoxrux azadov
Зарегистрирован 1 неделю назад
5
Koreets Koreytsev
Зарегистрирован 1 неделю назад
© de-vraag 2022
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией