Я написал скрипт с использованием tkinter в процедурной манере, который работал правильно:
import tkinter as tk
master = tk.Tk()
Experiment = tk.StringVar()
list1 = ['Option 1', 'Option 2', 'Option 3', 'Custom...']
def new_label(Experiment):
if (Experiment == 'Custom...'):
label_6 = tk.Label(master,
text='Experiment',
relief = 'solid',
width=20,
font=('arial',10,'bold')).pack()
Experiment.set('Experiment')
droplist = tk.OptionMenu(master, Experiment, *list1, command = new_label)
droplist.config(width=20)
droplist.pack()
master.mainloop()
Однако, когда я попытался использовать объектно-ориентированный подход:
import tkinter as tk
class demo1:
def __init__(self, master):
self.master = master
self.Experiment = tk.StringVar()
self.Experiment.set('Experiment')
list1 = ['Option 1', 'Option 2', 'Option 3', 'Custom...']
self.droplist = tk.OptionMenu(self.master, self.Experiment, *list1, command = self.new_label)
self.droplist.config(width=20)
self.droplist.pack()
def new_label(self):
if (self.Experiment == 'Custom...'):
label_6 = tk.Label(self.master,
text='Experiment',
relief = 'solid',
width=20,
font=('arial',10,'bold')).pack()
root = tk.Tk()
app = demo1(root)
root.mainloop()
Я столкнулся с этой ошибкой:
Исключение в обратном вызове Tkinter (последний последний вызов):
Файл "/home/majido/anaconda3/lib/python3.7/tkinter/init. py ", строка 1705, в вызов , возврат файла self.func (* args)" /home/majido/anaconda3/lib/python3.7/tkinter/init.py ",строка 3442, в call self .__ callback (self .__ value, * args) TypeError: new_label () принимает 1 позиционный аргумент, но 2 были даны
, к которым я не мог относитьсято, что я уже закодировал, я ничего не пропустил.