Я пытаюсь создать программу, которая будет воспроизводить звуки при нажатии кнопки. Но у меня проблемы с вызовом функции. То, что я хочу сделать, это нажать кнопку LowC (или любую другую заметку), и она перейдет к LowC (или соответствующей функции примечания), а затем переходит к функции Launch для запуска звука. Вместо этого он дает мне ошибку «Nonetype». Я не знаю, что не так. Я попытался заменить this.Launch() на это. Запустите, но затем он не выполнит функцию запуска, а также я попробовал this.Launch (это), но потом он все равно не работает. Любая помощь?TypeError: объект «NoneType» не может быть вызван с помощью tkinter
from tkinter import *
import winsound
import msvcrt as m
class Application(Frame):
def __init__(this, master):
Frame.__init__(this, master)
this.grid()
this.create()
def create(this):
test = m.kbhit()
if test == True:
print('test is true')
this.sound1 = IntVar()
this.dir = Label(this, text = "Click a button to play a sound")
this.dir.grid(row = 1, column = 0, columnspan = 5, sticky = W)
#Create buttons for Notes
this.LowC = Button(this,
text = "Low C",
command = this.LowC,
).grid()
this.D = Button(this,
text = "D",
command = this.D,
).grid()
this.E = Button(this,
text = "E",
command = this.E,
).grid()
this.F = Button(this,
text = "F",
command = this.F,
).grid()
this.G = Button(this,
text = "G",
command = this.G,
).grid()
#create launch button
this.Launch = Button(this,
text = "Launch",
command = this.Launch,
).grid()
#create sound length slider
this.TIME = Scale(this,
orient = HORIZONTAL,
length = 400,
width = 20,
sliderlength = 10,
from_=0,
to = 5000,
tickinterval = 500,
variable = this.sound1
).grid()
#Keypress
#create freq conversion
def LowC(this):
this.freq = 262
print(this.freq)
this.Launch()
def D(this):
this.freq = 294
print(this.freq)
def E(this):
this.freq = 330
print(this.freq)
def F(this):
this.freq = 349
print(this.freq)
def G(this):
this.freq = 392
print(this.freq)
#initiate beep
def Launch(this):
winsound.Beep(this.freq, this.sound1.get())
print('Tada!')
return
base = Tk()
base.title("Basic Program Outline")
base.geometry("500x500")
app = Application(base)
base.mainloop()
Вам нужно будет включить * полную трассировку * вашего исключения. –
Ваше использование 'this' как первого аргумента для методов технически корректно, но обратите внимание, что подавляющее большинство Python-кода использует' self' для этого параметра. –
У вас есть метод класса 'Launch' и атрибут экземпляра' Launch'. Последний маскирует первое, вы не можете иметь оба. То же самое относится к вашему методу «LowC» и кнопке. –