Как создать кнопку в топлевеле в ткинтер - PullRequest
0 голосов
/ 12 октября 2019

Я получаю сообщение об ошибке, когда пытаюсь создать кнопку на Toplevel в tkinter. Я использую python3.

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

import tkinter as tk
from tkinter import *

import openpyxl


def create_search_for_window():
    top = Toplevel(root)
    canvas2 = tk.Canvas(top, width=800, height=600)
    canvas2.pack()

    Kodi = tk.Entry(top,font=('Helvetica', '20'))
    canvas2.create_window(400, 100,window=Kodi,height=100, width=200)
    kontrollo_per_kodin = tk.Button(text='Kontrollo', font=('Helvetica', 
'12'))
    canvas2.create_window(400, 200, window=kontrollo_per_kodin)


return None

book = openpyxl.load_workbook('Book1.xlsx')
sheet = book.active
columns = sheet.rows

root = Tk()


canvas1 = tk.Canvas(root, width=800, height=800)
canvas1.pack()
lab = tk.Label(root, text="aba")

kontrollo = tk.Button(text='Kontrollo', command=create_search_for_window, 
font=('Helvetica', '12'))
kontrollo.pack()
canvas1.create_window(100, 200, window=lab)
canvas1.create_window(120, 230, window=kontrollo)
root.mainloop()

Мой ожидаемый результат заключается в том, что когда я нажимаю кнопку «Контролло» на первом холсте после создания второго холста, там также будет другая кнопка. ,Вторая переменная кнопки - это "kontrollo_per_kodin" в приведенном выше коде.

Это ошибка, которую я получаю:

_tkinter.TclError: не могу использовать.! Button2 в элементе окнаэтот холст

1 Ответ

0 голосов
/ 12 октября 2019

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

kontrollo_per_kodin = tk.Button(canvas2, ...)
...