Как сделать так, чтобы метка tkinter не изменяла размер столбца с помощью Grid? - PullRequest
0 голосов
/ 05 февраля 2019

Мне нужно добавить черную полосу в верхней части окна моей программы, содержащую заголовок, например, посмотрите на верхнюю часть этой веб-страницы - там есть заголовок, который в основном то, что я хочу для всех моих окондля моей программы tkinter.В любом случае я могу установить значение по умолчанию для каждого из новых окон, которые я создаю?или есть формат по умолчанию, который я могу создать, который будет автоматически назначен каждому окну / странице?

Я пытался использовать метку для растягивания по экрану, например:

label1 = tkinter.Label(window, text="Title            ",bg="black",fg="white")
label1.grid(row=0,column=0)

Iтакже пробовал другие вещи, но проблема в том, что он регулирует размер столбца сетки, что означает, что я могу иметь только один столбец виджетов.

Просто для справки, мне 14 лет, и я все еще изучаю основы, поэтому я использую простойспособ использования tkinter.

Это пример того, как я обычно использую tkinter, поэтому, пожалуйста, будьте терпеливы со мной, ха-ха.

#How i create main window.
window1 = tkinter.Tk()
#Insert window1 configurations(e.g, title, background, icon)

#How i create new windows
window2 = tkinter.TopLevel()
#Insert window2 configurations(e.g, title, background, icon)
window2.withdraw()

#How i open a new window
def openwindow():
    window1.withdraw
    window2.update
    window2.deiconify

Теперь у меня проблема в этом коде:

#New page
def SongPage():
    MainMenu.withdraw()
#Newpage
def OptionsPage():
    MainMenu.withdraw()



#MainMenu window.
MainMenu = tkinter.Tk()

MainMenu.geometry("200x150")

MainMenu.configure(background="grey")

MainMenu.title("Title")

#This is the header.(It has spaces to make it spread across screen)
MenuTitle = tkinter.Label(MainMenu, text="Header             ",bg="black", 
                         fg="white",font=("Times",20,"bold"))
#This is a small subheader.(It has spaces to make it spread across screen)
MenuSub = tkinter.Label(MainMenu, text="   Subheading                                          
                   ",bg="grey34", fg="white",font=("Times",10,"bold"))

#These "space" labels are to just space things out.
space3 = tkinter.Label(MainMenu, text="",bg="grey", fg="white",
                          font=("Times",20,"bold"))
space4 = tkinter.Label(MainMenu, text="",bg="grey", fg="white",
                          font=("Times",20,"bold"))

#These are the two buttons i'd like to be on screen under headers.
SongButton = tkinter.Button(MainMenu, text="Songs", bg="grey",fg="black",
                            font=("Times",12),command=SongPage)
OptionsButton = tkinter.Button(MainMenu, text="Options", bg="grey",fg="black",
                               font=("Times",12),command=OptionsPage)


#This is applying the widgets to the window.
MenuTitle.grid(row=0,column=0)
MenuSub.grid(row=1,column=0)
SongButton.grid(row=3,column=0)
OptionsButton.grid(row=3,column=1)

Вот скриншот того, как он выглядит в данный момент: https://pasteboard.co/HZKnIR9.png

Вот как я хочу, чтобы он выглядел: https://pasteboard.co/HZKo1Ru.png

1 Ответ

0 голосов
/ 05 февраля 2019

Вы можете использовать ключевой аргумент columnspan при вызове .grid ().Затем вы можете использовать ключевое слово sticky, чтобы убедиться, что оно касается левого и правого краев столбцов.Например:

label1.grid(row=0, column=0, columnspan=2, sticky='ew')

приведет к тому, что ваша метка будет распространяться как на столбец 0, так и на столбец 1. Если в вашем окне только два столбца, черная полоса всегда будет расширяться.Если у вас более двух столбцов, вам нужно большее число для столбца.

Tkinter рассчитает ширину всех столбцов, используя сначала размер других виджетов.Если ваша черная полоса настолько велика, что ей нужно больше места, то TkInter придется растянуть ширину других столбцов.Но, вероятно, в этом нет необходимости, и черная полоса будет хорошо проходить через окно, что вам и нужно.

См. Документацию здесь: http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/grid.html

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