Сложность установки размеров окна в конструкторе tkinter - PullRequest
0 голосов
/ 07 июля 2019

Я хотел бы, чтобы окно инициализировалось с заданным размером, таким как 600x500. У меня возникли трудности с этим через конструктор в классе GUI_window.

Я попытался ввести аргументы width = 600 height = 500 в

tk.Tk.__init__(HERE) 

но это приводит к ошибке: " init () получил неожиданный аргумент ключевого слова" ширина "." Я также попытался записать его в исходный параметр вызова как таковой

GUI_window(width = 600, height = 500)

но меня приветствует то же сообщение об ошибке

tkinter импортируется как таковой:

import tkinter as tk

Вот класс, в котором происходит ошибка, (строка 2 этого блока)

class GUI_window(tk.Tk):
    def __init__(self, *args, **kwargs):

        tk.Tk.__init__(self, *args, **kwargs)

        container = tk.Frame(self)

        container.place(relx = 0, rely = 0, relwidth = 1, relheight = 1)

        self.frames = {}

Я вызываю метод с этими строками в конце программы.

GUI = GUI_window()
GUI.mainloop()

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

1 Ответ

1 голос
/ 07 июля 2019

Чтобы установить размер окна, вы должны использовать

 GUI.geometry("600x500")

Или внутри конструктора

self.geometry("600x500")

import tkinter as tk

class GUI_window(tk.Tk):
    def __init__(self, *args, **kwargs):

        tk.Tk.__init__(self, *args, **kwargs)

        self.geometry("600x500")

        container = tk.Frame(self)

        container.place(relx = 0, rely = 0, relwidth = 1, relheight = 1)

        self.frames = {}

GUI = GUI_window()
GUI.mainloop()

Вы можете отправить его в конструкторе

GUI_window(width=600, height=500) 

но позже вам придется удалить width и height из **kwargs, прежде чем использовать **kwargs в tk.Tk.__init__(self, *args, **kwargs)


EDIT: версия, которая использует width=600, height=500 и не имеет проблем с kwargs. Требуются значения по умолчанию в __init__, если вы хотите использовать GUI_window() без width=600, height=500.

import tkinter as tk

class GUI_window(tk.Tk):
    def __init__(self, *args, width=300, height=300, **kwargs):

        tk.Tk.__init__(self, *args, **kwargs)

        self.geometry("{}x{}".format(width, height))

        container = tk.Frame(self)

        container.place(relx = 0, rely = 0, relwidth = 1, relheight = 1)

        self.frames = {}

GUI = GUI_window(width=600, height=500)
#GUI = GUI_window()
GUI.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...