Для новичков в Tkinter и просто в среднем на Python трудно найти нужный материал на tkinter. Вот проблема, которую я встречал (и начинаю решать). Я думаю, проблема возникла из версии python.TypeError в 2 классах приложение tkinter
Я пытаюсь сделать GUI, в ООП, и мне трудно сочетать разные классы.
Скажем, у меня есть «маленькая коробка» (например, строка меню), и вы хотите поместить ее в «большую коробку». Работа из этого учебника (http://sebsauvage.net/python/gui/index.html), я пытаюсь следующий код
#!usr/bin/env python3.5
# coding: utf-8
import tkinter as tki
class SmallBox(tki.Tk):
def __init__(self,parent):
tki.Tk.__init__(self,parent)
self.parent = parent
self.grid()
self.box = tki.LabelFrame(self,text="small box")
self.box.grid()
self.graphicalStuff = tki.Entry(self.box) # something graphical
self.graphicalStuff.grid()
class BigBox(tki.Tk):
def __init__(self,parent):
tki.Tk.__init__(self,parent)
self.parent = parent
self.grid()
self.box = tki.LabelFrame(self,text='big box containing the small one')
self.graphStuff = tki.Entry(self.box) # something graphical
self.sbox = SmallBox(self)
self.graphStuff.grid()
self.box.grid()
self.sbox.grid()
Но я получил следующее сообщение об ошибке.
File "/usr/lib/python3.5/tkinter/__init__.py", line 1871, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
TypeError: create() argument 1 must be str or None, not BigBox
Ваш пример хороший, но вы должны явно создать корневое окно и передать это как первый параметр в «BigBox» (например: «root = Tk(); tg = BigBox (root)») –
Ок, Я сохраню это. Поэтому, если я это понимаю, когда я перехожу на Tk в Frame, я должен теперь создать объект Tk() и передать его в качестве родителя для моего основного фрейма. –
Да, это правильно. –