Как вы растягиваете запись, чтобы соответствовать экрану в tkinter? - PullRequest
0 голосов
/ 20 января 2019

Я знаю, что вы можете сделать это с label.pack(fill=x), но мне нужно использовать сетку.Я искал вокруг и нашел root.grid_rowconfigure(0, weight=1) и root.grid_columnconfigure(0,weight=1), но они просто центрируют запись в середине экрана, и мне тоже нужно изменить размер.Я новичок в этом, поэтому любая помощь очень ценится.

from tkinter import *

import pyperclip

root = Tk()

def listify(userString, brackets=True, quotes=True):

    outputList = []
    outputString = ''

    if brackets == True:
        outputList.append('[')

    if quotes == True:
        outputList.append("\"")
    userString = str(userString)
    lastCharacter = ""

    for character in userString:

        if character == " " or character == '   ':

            if lastCharacter == " " or lastCharacter == '   ':
                pass

            elif lastCharacter != " " or lastCharacter != '   ':

                if quotes == True:
                    outputList.append("\"")

                outputList.append(', ')

                if quotes == True:
                    outputList.append("\"")

        else:
            outputList.append(character)

        lastCharacter = character

    if quotes == True:
        outputList.append("\"")
    if brackets == True:
        outputList.append("]")

    outputString = outputString.join(outputList)
    return(outputString)

def mainListify():

    outputLabel.destroy()
    pyperclip.copy(listify(userText.get(),bracketsVar.get(),quotesVar.get()))
    newLabel = Label(root, text = listify(userText.get(),bracketsVar.get(),quotesVar.get()))
    newLabel.grid()


userText = StringVar()
quotesVar = BooleanVar()
bracketsVar = BooleanVar()

quotesVar.set(True)
bracketsVar.set(True)

userEntry = Entry(root, textvariable=userText)
quotes = Checkbutton(root, text='Quotes', onvalue=True, offvalue=False, variable=quotesVar)
brackets = Checkbutton(root, text='Brackets', onvalue=True, offvalue=False, variable=bracketsVar)
startButton = Button(root, text='Start', command=mainListify)
outputLabel = Label(root, text='Output Will Show Here')


userEntry.grid(columnspan=2)
quotes.grid(row=1)
brackets.grid(row=1,column=1)
outputLabel.grid(row=3,column=1)
startButton.grid(row=2, column=0)

root.mainloop()

1 Ответ

0 голосов
/ 20 января 2019

Вам необходимо использовать sticky параметр grid, который определяет how to expand the widget if the resulting cell is larger than the widget itself.

Вот пример (лишенный вашего кода):

from tkinter import *

root = Tk()

userText = StringVar()
quotesVar = BooleanVar()
bracketsVar = BooleanVar()

quotesVar.set(True)
bracketsVar.set(True)

userEntry = Entry(root, textvariable=userText)
quotes = Checkbutton(root, text='Quotes', onvalue=True, offvalue=False, variable=quotesVar)
brackets = Checkbutton(root, text='Brackets', onvalue=True, offvalue=False, variable=bracketsVar)
startButton = Button(root, text='Start')
outputLabel = Label(root, text='Output Will Show Here')

userEntry.grid(row=0, column=0, columnspan=2, <b>sticky="nsew"</b>)
quotes.grid(row=1, column=0, sticky="ew", <b>padx=10</b>)# padx for horizontal spacing
brackets.grid(row=1, column=1, sticky="ew", padx=10)
outputLabel.grid(row=3, column=0, columnspan=2)
startButton.grid(row=2, column=0, columnspan=2)

root.mainloop()

Результат:

Result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...