Как добавить поле в окно tkinter? - PullRequest
4 голосов
/ 04 сентября 2010

Итак, у меня пока простое окно Python Tkinter, и я добавляю текст, кнопки и т. Д.

фрагмент кода:

class Cfrm(Frame):

    def createWidgets(self):

        self.text = Text(self, width=50, height=10)
        self.text.insert('1.0', 'some text will be here')
        self.text.tag_configure('big', font=('Verdana', 24, 'bold'))


        self.text["state"] = "disabled"
        self.text.grid(row=0, column=1)

        self.quitw = Button(self)
        self.quitw["text"] = "exit",
        self.quitw["command"] = self.quit
        self.quitw.grid(row=1, column=1)


    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

проблема в том, что я хочу, чтобы вокруг окна было поле размером 15-20 пикселей, я искал везде и не мог найти решение Также

self.text.tag_configure('big', font=('Verdana', 24, 'bold'))

не работает. Любые возможные решения?

Ответы [ 3 ]

13 голосов
/ 05 сентября 2010

Хорошо, вот решение, которое я нашел для вопроса 1:

self.grid(padx=20, pady=20)

Удаление .text, похоже, меняет весь кадр.Я до сих пор не решил проблему 2.

11 голосов
/ 04 сентября 2010

Используйте параметры пэда (padx, pady, ipadx, ipady) для команды grid, чтобы добавить отступ вокруг текстового виджета.Например:

self.text.grid(row=0, column=1, padx=20, pady=20)

Если вы хотите заполнить весь GUI, добавьте заполнение, когда вы упаковываете фрейм приложения:

self.pack(padx=20, pady=20)

Когда вы говорите, что команда tag не работаеткак вы определяете "не работает"?Вы получаете ошибку?Шрифт выглядит большим, но не жирным, жирным, но не большим, ...?Команда выглядит хорошо для меня, и когда я запускаю ее, она работает нормально.

Ваш пример не показывает, что вы фактически применяете этот тег к диапазону текста.Ты?Если так, то как?Если вы делаете следующее, что происходит?

self.text.insert("1.0", 'is this bold?', 'big')
1 голос
/ 06 сентября 2010

Быстрый способ сделать это - настроить стиль рельефа на плоский, тогда вам нужно всего лишь отрегулировать ширину границы.

self.Border = Tkinter.Frame(self, relief='flat', borderwidth=4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...