Tkinter 'module' объект не вызывается - PullRequest
0 голосов
/ 25 апреля 2020

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

import tkinter as tk
import tkinter.messagebox
import pandas as pd
root= tk.TK()
def customer_search():
    try:
        search = int(entry1.get())
    except ValueError:
        tk.messagebox("that customer doesnt exist, please enter a new number")      #error proofing has to be added tomorrow
        search = int(entry1.get())

    k = df.loc[df['UniqueID'] == search]
    k.to_excel("dashboard.xlsx")
    df.to_excel("check.xlsx")


canvas1 = tk.Canvas(root, width=400, height=300)
canvas1.pack()

entry1 = tk.Entry(root)
canvas1.create_window(200, 140, window=entry1)

button1 = tk.Button(text='Enter a customer for analysis', command=customer_search)
button1.pack()

ошибка, которую я получаю, выглядит следующим образом

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:/Users/....py", line 42, in customer_search
    search = int(entry1.get())
ValueError: invalid literal for int() with base 10: 'a'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users...\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "C:/Users....py", line 44, in customer_search
    tk.messagebox("that customer doesnt exist, please enter a new number")      #error proofing has to be added tomorrow
TypeError: 'module' object is not callable

Process finished with exit code 0

Ответы [ 2 ]

2 голосов
/ 25 апреля 2020

tk.messagebox - это модуль, содержащий несколько диалогов, возможно, вы захотите использовать tk.messagebox.showerror("Info Title", "Info content").

Другие диалоговые окна - showwarning и showinfo, в зависимости от вашего варианта использования.

1 голос
/ 25 апреля 2020

tk.messagebox - это модуль, а не функция. Основное c различие между модулями и функциями заключается в том, что:

  • Вы не можете вызывать модули, т. Е. Не можете module(). ( Это именно та ошибка, которую вы совершаете. )
  • Вы можете вызывать функции, т.е. вы можете делать function(). ( Это то, что вы должны делать вместо этого. )

Вам нужно сделать это следующим образом (в customer_search):

tk.messagebox.showerror("Title here", "that customer doesnt exist, please enter a new number")

где tk.messagebox.showerror является функцией в tk.messagebox модуле .

...